1

我只是想知道是否有人设法异步获取远程 URL 的内容,对其进行处理,然后在不使用 AJAX 的情况下将其输出到当前文档。

4

3 回答 3

2

PHP是单线程的。您必须使用浏览器功能来分叉另一个进程。

Javascript 可以是异步的,你需要它来处理你的情况。

于 2013-05-17T10:34:35.467 回答
2

不与 file_get_contents,不。或者,您可以使用 CURL 扩展及其非阻塞 IO 功能。所有这些都可以通过 CURL 的 Multi Handlers 获得。从某种意义上说,它是“异步”的,如果结果尚未准备好读取,您可以轮询结果并继续处理其他事情。这使它成为“异步”,因为您永远不会阻塞并等待响应,只要有工作要做 - 去做。对于某些人来说,难以理解的是异步和非阻塞之间的区别,在大多数情况下,您真正​​想要的 PHP 是某种 NB I/O。给定一些抽象层,你真的可以想出一个很好的 IO 回调接口,它具有匿名函数的所有乐趣,但那是另一回事了。

http://www.php.net/manual/en/function.curl-multi-init.php这是它开始的地方,包含的例子很棒见http://www.php.net/manual/en/ function.curl-multi-exec.php NB 轮询器 见http://www.php.net/manual/en/function.curl-multi-select.php

这家伙避免了 curl 的简单性并直接处理 http 协议,这是另一种解决方案https://segment.io/blog/how-to-make-async-requests-in-php/但需要更多套接字API的知识。

干杯

于 2013-05-17T12:53:36.993 回答
0

您可以做的是在 PHP 中创建非阻塞套接字连接,这意味着您的代码可以在加载来自连接的数据时处理其他内容(例如,将 HTML + flush() 打印到浏览器),然后再轮询它。

只是谷歌'php异步套接字'

于 2013-05-17T10:54:49.060 回答