![]() |
1
44
我以前接受的答案不起作用。它仍在等待回应。不过,这确实有效,从 How do I make an asynchronous GET request in PHP?
|
![]() |
2
28
如果您控制要异步调用的目标(例如,您自己的“longtask.php”),则可以从该端关闭连接,两个脚本将并行运行。它的工作原理如下:
我试过这个,效果很好。但是quick.php不会知道longtask.php的工作情况,除非您在进程之间创建一些通信方式。 在执行任何其他操作之前,请在longtask.php中尝试此代码。它将关闭连接,但仍将继续运行(并抑制任何输出):
|
![]() |
3
18
您可以使用exec()调用一些可以执行HTTP请求的东西,比如
如果您想将进程与apache线程完全分离,请尝试以下方法(我不确定这一点,但希望您能理解):
|
![]() |
4
14
截至2018年, Guzzle 它可以很好地进行异步HTTP调用,甚至 pool them 例如,当您需要进行100次HTTP调用,但不希望一次运行超过5次时。 并发请求示例
http://docs.guzzlephp.org/en/stable/quickstart.html#concurrent-requests |
![]() |
5
11
|
![]() |
6
11
您可以使用此库: https://github.com/stil/curl-easy 这很简单:
下面您可以看到上面示例的控制台输出。 它将显示简单的实时时钟,指示请求运行的时间:
|
![]() |
7
9
使用这种方法,不需要通过太依赖于操作系统、浏览器和PHP版本的头文件和缓冲区来实现连接处理 主进程
背景过程
铌
资源 |
![]() |
8
5
斯沃尔延伸。 https://github.com/matyhtf/swoole
|
![]() |
9
4
让我给你指路:)
(我的服务器发送1000个https get请求只需2秒)
|
![]() |
10
4
您可以使用在代码和pecl扩展之间提供抽象层的库: https://github.com/reactphp/event-loop 您还可以基于前面的库使用异步http客户端: https://github.com/reactphp/http-client 请参阅PHP的其他库: http://reactphp.org 使用异步模型时要小心。 我建议在youtube上观看此视频: http://www.youtube.com/watch?v=MWNcItWuKpI |
![]() |
11
3
|
![]() |
12
3
事件扩展Event 扩展是非常合适的。这是一个港口 Libevent 我已经编写了一个示例HTTP客户机,它允许安排一些 HTTP请求并异步运行它们。 事件 扩大 该类允许调度大量HTTP请求,然后异步运行它们。 http-client.php
test.php这是服务器端的一个示例脚本。
用法
样本输出
(修剪过。) 注意,该代码是为长期处理而设计的 CLI SAPI . 对于自定义协议,考虑使用低级API,即 buffer events , buffers ssl context . 示例: 尽管Libevent的httpapi很简单,但它不如缓冲区事件灵活。例如,HTTP API目前不支持自定义HTTP方法。但是,使用低级API几乎可以实现任何协议。 电动汽车扩建
我还使用
Ev
延长
sockets
non-blocking mode
. 由于Ev是一个通用的事件循环,因此代码比基于事件的示例稍微详细一些。它不提供特定于网络的功能,但
Ev扩展实现了一个简单但功能强大的通用事件循环。它不提供特定于网络的监视程序,但其 I/O watcher 可用于异步处理 插座 .
http-client.php
测试
然后是
(已修剪)
插座
扩展插件可能会记录以下各项的警告:
关于《守则》的“其余部分”
应该与网络请求并行运行的代码可以在 Event timer ,或电动汽车 idle watcher |
![]() |
13
2
我觉得这个软件包非常有用而且非常简单: https://github.com/amphp/parallel-functions
您还可以在闭包中使用类实例方法。 例如,我使用基于此包的Laravel扩展 https://github.com/spatie/laravel-collection-macros#parallelmap
它在10个并行线程中加载所有需要的数据,而不是在没有异步的情况下加载50秒,只需8秒即可完成。 |
![]() |
14
1
下面是一个工作示例,只需运行它,然后打开storage.txt,检查神奇的结果
|
![]() |
15
1
示例:**我的函数的用法。。。
|
![]() |
16
1
反应PHP异步http客户端
通过Composer安装
异步HTTP获取
|
![]() |
17
1
https://symfony.com/doc/current/components/http_client.html 例如,你可以
|
![]() |
18
-4
嗯,超时时间可以设置为毫秒, http://www.php.net/manual/en/function.curl-setopt |
![]() |
Jess The Witch · GCP云功能中处理延迟任务的模式 6 月前 |
![]() |
Plup · 连接失败时,PyMongo异步客户端未引发异常 6 月前 |
![]() |
user1233894 · 尝试从全局函数传递值 6 月前 |
![]() |
Fabiano Taioli · 管理单线程Rust中的阻塞函数 10 月前 |
![]() |
river7816 · 为什么spdlog不在async函数中打印 11 月前 |