我想知道如何实现一些 php 服务器后台功能以每秒处理一些评估(独立于用户查看页面)。
我当前的解决方案是使用每秒运行的 cron 作业完成的。我想知道是否还有其他选择或可能性。
提前致谢
1)用while循环编写程序并休眠。
while (1)
{
if (x == y) {
echo "yay!"
}
sleep(1);
}
2)用包装器编写程序,所以它永远不会崩溃。
while test 1
do
php /usr/local/bin/continual_process.php
done
这种方法的问题在于它不断地使用 CPU 周期。如果您将程序编写为 node.js 应用程序,事件驱动的架构和setTimeout
功能可以帮助扩展您的应用程序(并让您思考解决问题的不同思维方式)。
此外,您必须考虑处理循环需要多长时间。如果你每秒调用一次程序,但循环需要 2 秒,那么你正在吃掉你的进程!该sleep
方法可能也不值得。如果循环需要 2 秒,而您sleep 1
是每 3 秒运行一次该过程。
最后,如果您的流程又快又轻(循环不到 1 秒),请考虑使用setInterval
.
我建议您不要使用 cron,而是编写一个守护程序,您可以使用 PHP、python、node.js 或您喜欢的语言来执行此操作。编写好脚本后,您可以使用upstar将其转换为守护进程