【发布时间】:2016-10-28 00:07:54
【问题描述】:
我正在考虑使用 pcntl_alarm() 做某事,所以为了测试它,我运行了一个变体示例,您在 google pcntl_alarm 时随处可见:
function signal_handler()
{
echo "Caught SIGALRM\n";
exit;
}
pcntl_signal('SIGALRM', 'signal_handler');
pcntl_alarm(3);
for($i = 1; $i <= 6; $i++) {
echo "$i ";
sleep(1);
}
echo "Normal exit\n";
预期输出:
1 2 3 Caught SIGALRM
实际输出:
1 2 3 Alarm Clock
我尝试在pcntl_signal() 调用中不引用SIGALRM(因为它需要一个int),但是警报似乎没有触发:
1 2 3 4 5 6 Normal exit
我假设Alarm Clock 输出是由于默认处理程序而导致的,而我的signal_handler() 没有被调用。 SIGALRM 是正确的常数吗?我错过了什么?我在 linux (centos) 下通过 CLI 运行,已经尝试过 php 5.5 和 5.6。
【问题讨论】:
标签: php timeout command-line-interface pcntl