php 内部发信号
您好,在实现长时间保持打开状态的连接( comet )时, 我将如何实现 php 程序之间的信号发送(未完成的请求)?
时间线示例:
- 请求 1 开始
- 请求 1 执行操作
- 请求 1 休眠
- 请求 2 启动
- 请求 2 执行操作
- 请求 2 通知请求 1 并进入休眠状态
- 请求 1 唤醒并发送新数据
- 请求 1 休眠
我正在徘徊是否有方法哪个使用更少(注意?)CPU 处理
hi when implementing a connection that stays open for a long time ( comet ),
how would i implement signalling between php proses(outstanding requests)??
example timeline:
- request 1 start
- request 1 makes action
- request 1 sleeps
- request 2 start
- request 2 makes action
- request 2 notifies request 1 and go's to sleep
- request 1 wakes up and sends the new data
- request 1 sleeps agen
i was wandering if ther was a methode whitch use less(noting?) cpu prosessing
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您的平台是Linux/Unix,则可以使用队列。
信号量 你可以在没有
sleep( )
甚至,但是编码会更困难。If your platform is Linux/Unix, you can use queues.
Whith semaphores you can do this without
sleep()
even, but it will be more difficult to code.我相信您必须使用 pcntl_signal() 以及 pcntl_fork()。不过,服务器必须支持分叉。
至于CPU处理负载,在循环中使用usleep(),以便处理器有时间被其他进程使用。
I believe you would have to use pcntl_signal(), along with pcntl_fork(). The server would have to support forking though.
As for the cpu processing load use usleep() in the loop so that the processor has time to be used by other processes.
理想情况下,我会用请求或“作业”来编写它,以便将其写入数据库。
脚本 1 执行某些操作并将“作业”写入数据库
脚本 1 休眠一段时间,然后检查数据库中是否有该作业的返回码,如果有,则
行动
else sleep/repeat
script 2 检查数据库中未完成的作业
如果是这样的话
执行并写入返回码
否则睡眠/重复
ideally, I would write this with the requests or "jobs" for the purposes of this being written to a database.
script 1 does something and writes a "job" to the DB
script 1 sleeps for an interval, then checkes to see if there is a returncode for that job in the DB, if so then
act
else sleep/repeat
script 2 checks for uncompleted jobs in the DB
if so then
act and write returncode
else sleep/repeat