Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/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内部的信令_Php_Multithreading_Http - Fatal编程技术网

php内部的信令

php内部的信令,php,multithreading,http,Php,Multithreading,Http,hi在实现长时间保持打开的连接(comet)时, 如何在php进程(未完成的请求)之间实现信令 时间线示例: 请求1开始 请求1采取行动 请求1睡眠 请求2开始 请求2采取行动 请求2通知请求1并进入睡眠状态 请求1唤醒并发送新数据 请求1睡眠代理 我想知道是否有一种方法使用更少(注意?)的cpu处理理想情况下,我会将其与请求或“作业”一起写入数据库 脚本1执行某些操作并将“作业”写入数据库 脚本1休眠一段时间,然后检查数据库中是否有该作业的返回代码,如果有,则 行动 否则,请睡眠/重复 脚

hi在实现长时间保持打开的连接(comet)时, 如何在php进程(未完成的请求)之间实现信令

时间线示例:

  • 请求1开始
  • 请求1采取行动
  • 请求1睡眠
  • 请求2开始
  • 请求2采取行动
  • 请求2通知请求1并进入睡眠状态
  • 请求1唤醒并发送新数据
  • 请求1睡眠代理

我想知道是否有一种方法使用更少(注意?)的cpu处理

理想情况下,我会将其与请求或“作业”一起写入数据库

脚本1执行某些操作并将“作业”写入数据库
脚本1休眠一段时间,然后检查数据库中是否有该作业的返回代码,如果有,则
行动
否则,请睡眠/重复

脚本2检查数据库中未完成的作业
如果是,则
行动并编写返回代码

否则睡眠/重复

我相信你将不得不使用。不过,服务器必须支持分叉


至于循环中的cpu处理负载使用,以便处理器有时间供其他进程使用。

如果您的平台是Linux/Unix,则可以使用

  • 请求1开始
  • 请求1采取行动
  • 请求1睡眠和读取队列(睡眠(1)和读取队列)
  • 请求2开始
  • 请求2采取行动
  • 请求2向队列发送消息
  • 请求1从队列接收消息,唤醒并发送新数据
  • 请求1再次睡觉

你可以在没有睡眠的情况下做这件事,但是编码会更困难。

我想避免睡眠;检查;sleep prosegue,在发出信号时,你会一直保持睡眠,直到你在Que中收到一条消息感谢oz\msg\u receve blocks对我来说非常适合我的目标当它阻塞时,我会检查并报告它的cpu使用情况到目前为止你看起来很好,请原谅延迟响应,但是否有方法分发消息供任何侦听器接收?@borrel此消息可由任何侦听器接收。对于分发,我很抱歉向多个侦听器发送消息,并让他们全部处理