处理 PHP ^C CLI 脚本
我有一个 24/7 在后台运行的 php 脚本。我偶尔不得不终止它,脚本的目的是将比特币 RPC 中的交易数据缓存到 memcahced(如果你不知道那是什么,那就无关紧要)。我希望脚本在程序收到 ^C(控制 C)上发送的信号时执行一个函数。
I have a php script that runs in the background 24/7. I have to occasionally terminate it, and the point of the script is to cache transaction data to memcahced from bitcoin RPC (if you don't know what that is, it is irrelevant). I want the script to execute a function when the program receives the signal sent on ^C (control C).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可能需要
pcntl_signal
。您需要捕获的信号是SIGINT
。You probably want
pcntl_signal
. The signal you need to catch isSIGINT
.如果其他人正在寻找,我找到了一个不需要 pcntl_signal 的答案。
您可以使用
system("stty intr ^-");
来阻止^C
自动退出脚本。然后,您可以在 PHP 中将其捕获为ord(fread(STDIN, 1)) == 3
,并手动处理退出。我正在开发一个 库就是这样做的。
In case anybody else is looking, I've found an answer that doesn't require pcntl_signal.
You can use
system("stty intr ^-");
to stop^C
from exiting the script automatically. You can then capture it asord(fread(STDIN, 1)) == 3
within PHP, and handle exiting manually.I'm working on a library that does this.