Php 使用异步长轮询?

Php 使用异步长轮询?,php,zend-framework,asynchronous,nonblocking,Php,Zend Framework,Asynchronous,Nonblocking,我有一个基于Zend的应用程序,它使用长轮询。基本上,它会发出HTTP POST请求,阻止应用程序,直到它返回或在20秒后超时 我需要发出第二个请求(目前是非并行的),不幸的是,如果第一个请求挂起,则在第二个请求执行前20秒(=超时) 使我的应用程序异步的最好方法是什么,或者至少是执行非阻塞HTTP请求I/O?Mmmh,也许您应该在问题中添加更多信息。 如果这两个请求不相关(即,第二个请求不需要完成第一个请求),则可以执行多个查询,而无需等待第一个请求完成。当然,如果没有一些Javascript

我有一个基于Zend的应用程序,它使用长轮询。基本上,它会发出HTTP POST请求,阻止应用程序,直到它返回或在20秒后超时

我需要发出第二个请求(目前是非并行的),不幸的是,如果第一个请求挂起,则在第二个请求执行前20秒(=超时)


使我的应用程序异步的最好方法是什么,或者至少是执行非阻塞HTTP请求I/O?

Mmmh,也许您应该在问题中添加更多信息。 如果这两个请求不相关(即,第二个请求不需要完成第一个请求),则可以执行多个查询,而无需等待第一个请求完成。当然,如果没有一些Javascript,您就无法做到这一点


例如,您可以在异步模式下使用jQueryAjax函数(默认情况下是异步的)。您可以在jQuery中链接几个ajax调用,第二个调用不会等待第一个调用完成(但要小心ajax超时设置)。

Mmmh,也许您应该在问题中添加更多信息。 如果这两个请求不相关(即,第二个请求不需要完成第一个请求),则可以执行多个查询,而无需等待第一个请求完成。当然,如果没有一些Javascript,您就无法做到这一点


例如,您可以在异步模式下使用jQueryAjax函数(默认情况下是异步的)。您可以在jQuery中链接几个ajax调用,第二个调用不会等待第一个调用完成(但要注意ajax超时设置)。

如果两个请求都使用会话(session_start()调用),并且您没有在长轮询脚本中关闭会话,然后,在长轮询运行的所有时间内,针对使用相同会话的其他脚本锁定会话。因此,这些脚本必须等待(我认为它们挂在session_start(),但不确定)关闭会话,默认情况下,这是在脚本结束时自动完成的

因此,如果在长轮询中不需要会话,那么在您的情况下,在代码运行20秒之前(即长轮询中的主迭代之前),不要启动或关闭它(调用session_write_close())


希望这能有所帮助。

如果您的两个请求都使用会话(session_start()调用),并且您没有在长轮询脚本中关闭会话,那么在长轮询运行的所有时间内,该会话都会被其他使用同一会话的脚本锁定。因此,这些脚本必须等待(我认为它们挂在session_start(),但不确定)关闭会话,默认情况下,这是在脚本结束时自动完成的

因此,如果在长轮询中不需要会话,那么在您的情况下,在代码运行20秒之前(即长轮询中的主迭代之前),不要启动或关闭它(调用session_write_close())

希望这有帮助