我正在研究守护进程,想知道使用 PHP 来做到这一点有多可行(在内存和 CPU 使用率以及可靠性方面):
<?php
// Ignore user aborts and allow the script
// to run forever
ignore_user_abort(true);
set_time_limit(0);
$fp = fopen('loop.log', 'w');
fwrite($fp, date('Y-m-d H:i:s') . ' Started' . PHP_EOL);
while(1) {
fwrite($fp, date('Y-m-d H:i:s') . ' Looped' . PHP_EOL);
if (file_exists('loop.stop')) {
break;
}
// Sleep for 100 seconds
sleep(100);
}
fwrite($fp, date('Y-m-d H:i:s') . ' Stopped' . PHP_EOL);
fclose($fp);
这个简单的例子(改编自 PHP 手册忽略用户中止) 只是容器脚本。实际的功能将被放置在while
loop.
我已经让这个脚本在我的笔记本电脑上运行了 7 个小时,看起来不错,但作用不大。还有其他人尝试过这个吗?
我倾向于将循环放入 BASH 脚本中,以便定期清理所有 PHP 资源。
#!/bin/bash
clear
date
php -f doChecksAndAct.php
sleep 100
# rerun myself
exec $0
如果您在 PHP 脚本中执行任何特别繁重的设置任务,您还可以在其中放置一个小循环(例如 50-100 次迭代,如果它们之间没有暂停数秒)以减少总次数运行之间的开销时间。
添加:我在博客中介绍了 Bash/PHP(或其他语言)配对,以便您可以非常轻松地循环 PHP 脚本,然后退出以立即重新启动,或暂停一段时间 -在别处做工作——边栏运行工作人员.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)