如何保持一个持续运行的PHP脚本?
如果目标是长时间可靠地运行,则 supervisord 是完美的选择!我通过 https://lornajane.net/posts/2012/watch-over-long-running-processes-with-supervisord 找到了它。
编辑:这个工具的目的是解决所述的问题。所述目标是保持长时间运行的进程运行。一个评论指出(有效地),当前接受的解决方案不可靠,因为脚本很可能会崩溃等。因此,解决方案是使用一个工具来“启动和管理这个进程”,同时保持其运行。这个工具正是如此:它在后台启动进程并保持其运行。
如何保持一个持久的PHP脚本运行?
我们最近也有类似的需求。我们正在运行一个Ubuntu 14.04 LTS服务器,所以创建了一个upstart进程,在启动时启动该进程,并且如果它因任何原因退出,则重新启动。这对我们来说非常有效,包括自动重启;我们的长时间运行的进程最终会丢失MySQL连接。脚本处理异常并退出,然后upstart进程自动重新启动进程。我们还添加了一个cron脚本来监控进程,以防upstart放弃尝试重新启动;在简单的重启无法纠正之前错误时,我们有一个故障转移。
这也是我的首选。
嗨,你能提供一些代码示例或其他可以帮助寻找相同问题的人的东西吗?我是其中之一 🙂
- 我刚刚搜索了“ubuntu upstart example”,从Digital Ocean得到了一个很好的指南。它讨论了比我的示例更多的内容。它执行的PHP脚本只是通过CLI调用的东西 - 只需在一个while循环中包含一个代码。
非常感谢你的帮助,谢谢,这正是我需要的。我还查找了几个类似的教程,最好的一个是这个链接。我希望这会帮助某人,就像它帮助我一样。
如何保持持久的PHP脚本运行?
有时候我们可能需要运行一个PHP脚本并让它持续运行,而不是在执行完毕后立即停止。这种情况下,我们需要解决两个问题:如何让脚本在后台运行,并且在服务器重启后能够自动启动。
首先,我们可以使用以下命令将脚本在后台运行:
myscript.php &
通过这个命令,脚本将在后台运行,并且我们可以使用以下命令检查脚本是否在运行:
ps aux | grep myscript.php
接下来,我们需要解决脚本在服务器重启后无法自动启动的问题。一个简单的解决方法是在服务器重启后手动设置脚本的启动。
然而,我们也可以使用以下方法实现脚本在服务器重启后自动启动:
1. 创建一个启动脚本,例如`start_script.sh`,并将以下内容添加到脚本中:
#!/bin/bash php /path/to/myscript.php &
在这个脚本中,我们使用`php`命令来执行脚本,并将其放在后台运行。
2. 使用以下命令将脚本设置为可执行:
chmod +x start_script.sh
3. 将脚本添加到系统的启动脚本中,以便在服务器重启时自动运行。具体步骤可能因操作系统而异,下面是一些常见操作系统的示例:
- Ubuntu/Debian:
- 将脚本复制到`/etc/init.d/`目录中:
sudo cp start_script.sh /etc/init.d/
- 使用以下命令将脚本添加到系统启动项中:
sudo update-rc.d start_script.sh defaults
- CentOS/RHEL:
- 将脚本复制到`/etc/init.d/`目录中:
sudo cp start_script.sh /etc/init.d/
- 使用以下命令将脚本添加到系统启动项中:
sudo chkconfig --add start_script.sh
现在,当服务器重启时,脚本将自动启动并在后台持续运行。
需要注意的是,尽管以上方法可以实现脚本的持续运行,但脚本可能由于错误或内存泄漏而死机,导致无法重新启动。在这种情况下,我们可能需要定期检查脚本的运行状态,并在需要时手动重新启动脚本。