摘要:思路很简单开一个子进程处理异步事务,处理完之后,通过管道告诉父进程,并将返回数据写入管道代码如下可以看到运行结果是在前面证明是异步执行的其实通过中的和也可以实现不需要借助但是提供的确实很好用
思路很简单:
开一个子进程处理异步事务,处理完之后,通过管道告诉父进程,并将返回数据写入管道
代码如下:
AsynHttpClient.php
url = $url; $this->callback = $callback; $this->run(); } public function run() { $this->process = new swoole_process([$this, "callback"], true); $this->process->start(); swoole_event_add($this->process->pipe, function($pipe) { $content = $this->process->read(); call_user_func($this->callback, $content); swoole_event_del($this->process->pipe); }); } public function callback(swoole_process $process) { $ch = curl_init($this->url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $content = curl_exec($ch); curl_close($ch); $process->write($content); } }
index.php
require "AsynHttpClient.php"; new AsynHttpClient("http://127.0.0.1:9000/api.php", function($data) { print_r($data); }); echo 1;
api.php
"ok", "data" => "hello", ]);
php -S 127.0.0.1:9000
可以看到运行结果是1在前面, 证明是异步执行的.
其实通过php中的pcntl_fork和libevent也可以实现, 不需要借助swoole, 但是swoole提供的process确实很好用
https://www.iwantmoney.cn/art...
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/22259.html
摘要:本文使用与完成一个的进程池,并且支持动态创建新进程。接着遍历所有的进程,并且加入中,设置可读事件,用于接收子进程的空闲信号。最后每隔一秒向进程投递任务。由于只模拟了十次任务,则第十个任务完成之后在父进程中发送使所有子进程退出。 swoole_process 主要是用来代替 PHP 的 pcntl 扩展。我们知道 pcntl 是用来进行多进程编程的,而 pcntl 只提供了 fork 这...
摘要:实现异步的方式有哪些提供了一些异步方法那它们底层是用哪种方式实现的呢实现异步的方式有线程方式进程方式复用线程方式和进程方式类似有异步请求时开一个线程或者进程获取到数据后线程间可以直接共享数据进程间可以通过进程通信机制,如共享内存管道等方式进 实现异步的方式有哪些? swoole提供了一些异步方法, 那它们底层是用哪种方式实现的呢? 实现异步的方式有: 线程方式 进程方式 IO复用 ...
摘要:消息队列更常见的用途是主进程分配任务,子进程消费执行。子进程前面加了个,这是为了防止父进程还未往消息队列中加入内容直接退出。 前面几节都是讲解pcntl扩展实现的多进程程序。本节给大家介绍swoole扩展的swoole_process模块。 swoole多进程 swoole_process 是swoole提供的进程管理模块,用来替代PHP的pcntl扩展。 首先,确保安装的swoole...
摘要:清空主进程残留的定时器与信号。设定为执行回调函数如果在回调函数中调用了异步系统,启动函数进行事件循环。因此为了区分两者,规定并不允许两者同时存在。 前言 swoole-1.7.2 增加了一个进程管理模块,用来替代 PHP 的 pcntl 扩展。 PHP自带的pcntl,存在很多不足,如 pcntl 没有提供进程间通信的功能 pcntl 不支持重定向标准输入和输出 pcntl 只...
阅读 832·2021-10-11 10:59
阅读 2760·2019-08-30 15:43
阅读 2111·2019-08-30 11:08
阅读 1626·2019-08-29 15:20
阅读 967·2019-08-29 13:53
阅读 465·2019-08-26 13:24
阅读 1610·2019-08-26 13:24
阅读 2800·2019-08-26 12:08