PHP异步读取(shell脚本)
我有一个 PHP TCP 守护进程,它向客户端提供数据。功能之一是从“tail -f messages”命令获取信息。因此,我必须异步运行此命令,如果有新数据,请将其发送到客户端。
我有一个如何创建这个异步读取器的问题 - 添加新数据时,运行该方法,否则执行您必须执行的其他操作。
Mejmo
编辑:我的问题可以通过使用某些类型的线程和 IPC 来解决(php 支持线程吗?)。
I have a PHP TCP daemon which provides data to clients. One of the features is to get info from "tail -f messages" command. So I have to run this command asynchronously and in case of new data, send it to the clients.
I have a problem how to create this asynchronous reader - when new data is added, run the method, otherwise do the other things you have to.
Mejmo
EDIT: My problem could be resolved by using some kinds of threads and IPC (does php support threads?).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您可以安装扩展,则可以使用 libevent PHP 扩展来实现此目的。
If you can install extensions, you can implement this using the libevent PHP extension.
使用 popen 执行
tail -f message
,将'r'
作为$mode
参数传递。然后您可以从返回的文件指针fread。Use popen to execute
tail -f message
, passing'r'
as the$mode
parameter. Then you can fread from the returned file pointer.尝试
stream_set_blocking()
,它应该可以解决问题。Try
stream_set_blocking()
, it should do the trick.