相关疑难解决方法(0)

如何在PHP中创建异步HTTP请求

PHP中有没有办法进行异步HTTP调用?我不关心响应,我只想做类似的事情file_get_contents(),但是在执行其余代码之前不要等待请求完成.这对于在我的应用程序中引发排序的"事件"或触发长进程非常有用.

有任何想法吗?

php asynchronous http

202
推荐指数
11
解决办法
16万
查看次数

可扩展,延迟的PHP处理

我正在开发一个需要延迟PHP事件的在线PHP应用程序.基本上我需要能够在初始命中URL之后执行任意PHP代码x很多秒(但可能是几天).我需要相当精确地执行这些PHP事件,我也希望它具有相当的可扩展性.我正在努力避免安排一个cron作业每秒运行一次.我正在研究Gearman,但它似乎没有提供任何计划事件的能力,据我所知,PHP并不真正意味着作为一个守护进程运行.

如果我能告诉一些外部进程在下一个事件应该运行的确切时间在PHP服务器上轮询"事件检查器"URL,那将是理想的.此轮询时间需要能够随意减少或增加,因为事件可以被删除并添加到队列中.有什么想法以优雅的方式来实现这一目标吗?从外部调用PHP(必须解析HTTP请求或通过CLI调用)只需要很多开销就可以满足我的需求.

我目前的计划是编写一个PHP守护程序,它将使用gearman从PHP服务器运行事件和接口.PHP守护进程将围绕SplMinHeap构建,所以希望性能不会太糟糕.这个想法在我的口中留下了不好的味道,我想知道是否有人有更好的主意?想法略有改变.阅读编辑2.

编辑:

我正在创建一个在线游戏,让玩家轮流使用可变时间限制.我正在使用XMPP和BOSH来允许我向客户推送消息,但是我已经完成了所有这些工作.现在我正在尝试添加一个任意事件,该事件在从客户端播放之后触发,以便让客户端(以及游戏中的其他人员)花费很长时间.我无法在客户端使用定时触发器,因为这样可以被利用(因为客户端可以自己玩).希望有所帮助.

编辑2:

谢谢大家的反馈.虽然我认为你的大多数想法在小范围内都能很好地发挥作用,但我觉得它们不能很好地扩展(外部事件管理器)或缺乏该项目所需的准确性(CRON).此外,在这两种情况下,它们都是外部部件,可能会失败并增加已经很复杂的系统的复杂性.

我个人觉得满足这个项目要求的唯一干净的解决方案是编写一个处理延迟事件的PHP守护进程.我已经开始编写我认为第一个 PHP runloop.它处理观察套接字和执行延迟的PHP事件.希望当我接近完成这个项目时,我可以发布源代码,如果你们有兴趣的话.到目前为止,在测试中它已经证明是有希望的解决方案(没有内存泄漏或不稳定的问题).

编辑3:这是一个名为LooPHP的PHP事件循环库的链接,供有兴趣的人使用.

TL; DR要求

  • 在延迟的时间(从几秒到几天)调用(最好是原生的)PHP
  • 任意处理事件的创建/更新/删除(我期待大量取消的电话).
  • 处理预定的高负荷事件(每台服务器100-1000秒)
  • 通话时间应在预定时间的一秒钟内
  • 在这一点上,我不愿意将代码库重写为另一种语言(也许有一天我会)

php events asynchronous daemon

19
推荐指数
2
解决办法
6025
查看次数

标签 统计

asynchronous ×2

php ×2

daemon ×1

events ×1

http ×1