Linux服务器上的自动脚本(不是cron作业)
我正在Linux CentOS服务器上编程一个网站(我计划升级到一个VPS计划,我将有root访问权限)。大部分网站将依赖自动化的脚本。Linux服务器上的自动脚本(不是cron作业)
我有2个关于启动自动化过程的问题。
有没有什么办法可以启动一个守护程序线程或类似的东西,它会不断运行。每次电子邮件帐户收到新电子邮件时,我都需要执行脚本。我知道可以每分钟运行一次的cron作业,但有一个经常运行的脚本将是理想的,所以我可以在新电子邮件到达时执行该脚本。
有没有办法从代码(理想情况下是PHP)启动一个线程,该线程与主程序同时运行。在我使用的脚本中,imap_open用于连接到每次需要几秒钟的电子邮件帐户。但是,如果我可以同时触发多个并发脚本,那么理想情况下会减少程序的时间。有没有办法做到这一点?
任何有关这些问题的帮助将不胜感激。
完成这一切对于第一部分,有两个简单的解决方案:
使用的Vixie cron
@reboot
开始规范以重启时作为标准用户启动守护进程。这个和每一分钟的cron-jobs都是使用户能够轻松运行守护进程式服务的唯一机制。使用
procmail
在每次发送电子邮件时启动一个新脚本。这里的缺点是procmail
会运行,然后在每封电子邮件中启动一个新程序 - 当您每秒收到100封电子邮件时,与使用inotify(7)
来提醒长期存在的程序的守护进程相比,这可能是一个严重的障碍关于新电子邮件。
对于第二部分,请查找fork(2)
系统调用的包装。它在半父母和小孩身上干净利落地分割出一个程序 - 并允许每个人从此继续独立执行。如果孩子和家长将来需要再次交流,那么可能会看看PHP是否支持线程化执行。
你当然可以编写一个持续运行的守护进程/服务。对于启动教程,请参阅
http://www.netzmafia.de/skripten/unix/linux-daemon-howto.html
你的守护进程可以实现SMTP(有可用来支持这种现有的库)来定期检查新邮件的电子邮件帐户,并采取相应的行动。
下面是从SO答案的问题,讨论了如何使用Python
How to make a Python script run like a service or daemon in Linux
在电子邮件进入时有一些触发PHP脚本的解决方案 - 无需守护进程。也许我可以找到一个链接 –
在你的情况下,不需要运行一个守护进程。当您的电子邮件帐户收到消息时,您可以添加一种触发器。这个触发器会运行你的脚本,不再定期检查。你使用哪个电子邮件客户端? –
@Idiqual他在服务器上,我不认为他有一个客户端正在运行 –