2012-06-01 53 views
2

我正在Linux CentOS服务器上编程一个网站(我计划升级到一个VPS计划,我将有root访问权限)。大部分网站将依赖自动化的脚本。Linux服务器上的自动脚本(不是cron作业)

我有2个关于启动自动化过程的问题。

  • 有没有什么办法可以启动一个守护程序线程或类似的东西,它会不断运行。每次电子邮件帐户收到新电子邮件时,我都需要执行脚本。我知道可以每分钟运行一次的cron作业,但有一个经常运行的脚本将是理想的,所以我可以在新电子邮件到达时执行该脚本。

  • 有没有办法从代码(理想情况下是PHP)启动一个线程,该线程与主程序同时运行。在我使用的脚本中,imap_open用于连接到每次需要几秒钟的电子邮件帐户。但是,如果我可以同时触发多个并发脚本,那么理想情况下会减少程序的时间。有没有办法做到这一点?

任何有关这些问题的帮助将不胜感激。

+0

在电子邮件进入时有一些触发PHP脚本的解决方案 - 无需守护进程。也许我可以找到一个链接 –

+0

在你的情况下,不需要运行一个守护进程。当您的电子邮件帐户收到消息时,您可以添加一种触发器。这个触发器会运行你的脚本,不再定期检查。你使用哪个电子邮件客户端? –

+0

@Idiqual他在服务器上,我不认为他有一个客户端正在运行 –

回答

3

完成这一切对于第一部分,有两个简单的解决方案:

  1. 使用的Vixie cron @reboot开始规范以重启时作为标准用户启动守护进程。这个和每一分钟的cron-jobs都是使用户能够轻松运行守护进程式服务的唯一机制。

  2. 使用procmail在每次发送电子邮件时启动一个新脚本。这里的缺点是procmail会运行,然后在每封电子邮件中启动一个新程序 - 当您每秒收到100封电子邮件时,与使用inotify(7)来提醒长期存在的程序的守护进程相比,这可能是一个严重的障碍关于新电子邮件。

对于第二部分,请查找fork(2)系统调用的包装。它在半父母和小孩身上干净利落地分割出一个程序 - 并允许每个人从此继续独立执行。如果孩子和家长将来需要再次交流,那么可能会看看PHP是否支持线程化执行。

0

那么incron呢?可能有办法在你的情况下使用它,但你必须产生一个文件系统事件(例如创建一个新文件)。