Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 服务器在GAE上发送事件:¿;可能吗?_Php_Google App Engine_Websocket_Streaming - Fatal编程技术网

Php 服务器在GAE上发送事件:¿;可能吗?

Php 服务器在GAE上发送事件:¿;可能吗?,php,google-app-engine,websocket,streaming,Php,Google App Engine,Websocket,Streaming,我想启用某种涉及PHP(后端)和JS(前端)的实时机制。SSE似乎是个不错的方法,因为我不需要双向连接 我面临的问题是Google App Engine正在缓冲PHP响应,破坏了flush()的使用,因此阻止我构建SSE服务器 有人知道如何使GAE不缓冲响应吗?使用流媒体?套接字?在GAE下证明有效的替代方案?我尝试过使用通道,但这带来了巨大的挑战,因为我的应用程序完全是基于PHP构建的,我唯一想做的就是添加一些实时通知功能。在同一个项目中有两种语言共存也有其自身的复杂性 任何回答、建议、输入或

我想启用某种涉及PHP(后端)和JS(前端)的实时机制。SSE似乎是个不错的方法,因为我不需要双向连接

我面临的问题是Google App Engine正在缓冲PHP响应,破坏了flush()的使用,因此阻止我构建SSE服务器

有人知道如何使GAE不缓冲响应吗?使用流媒体?套接字?在GAE下证明有效的替代方案?我尝试过使用通道,但这带来了巨大的挑战,因为我的应用程序完全是基于PHP构建的,我唯一想做的就是添加一些实时通知功能。在同一个项目中有两种语言共存也有其自身的复杂性

任何回答、建议、输入或反馈都将不胜感激。

编辑:

正如@Shrike在评论中指出的,这个答案中的信息已经过时了。使用新的运行时(python3、java11、PHP7),自动缩放的请求超时时间为10分钟,使用基本或手动缩放的请求超时时间为24小时(源代码:)

即使如此,也不可能使用服务器发送的事件

App Engine不支持在处理请求时以增量块的形式向客户端发送数据的流式响应。代码中的所有数据都按上述方式收集,并作为单个HTTP响应发送

(来源:)

传统答案(适用于Java 8、PHP 5和Python 2):

按照设计,服务器发送事件和Web套接字等技术在应用程序引擎上不起作用。App Engine中的所有前端请求的运行时间限制为60秒,任务限制为10分钟。因此,即使您将与客户端的连接保持打开状态(如服务器发送的事件),它也会在60秒后关闭。如果您可以打开与任务的web套接字连接(您不能),它将在十分钟后关闭

备选方案是:

  • 正如你自己指出的那样。然而,channel API似乎没有与PHP很好地集成
  • 正如齐格·曼德尔所指出的那样
  • 切换到

免费查看gcm。我已经测量了运行时超时(我已经将GAE限制到知道我能做什么或不能做什么),到目前为止,我只有60秒,而不是30秒。尽管如此,您的输入非常有见地:我没有尝试过云消息或虚拟机。我想我会试试GCM。谢谢你完全正确。请求截止时间为60秒。我会在我的回答中更正它,谢谢你指出它。这不再是正确的了。自动缩放请求超时-10分钟,基本和手动-24小时,请参阅@Shrike Thank。我根据新的规范更新了答案。@konqi酷,不幸的是SSE仍然不能在GAE标准上工作(仅在Flexible上)