2

我正在 Linux CentOS 服务器上编写一个网站(我计划升级到一个 VPS 计划,在那里我将拥有 root 访问权限)。许多网站将依赖于自动化的脚本。

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

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

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

对于这些问题的任何帮助将不胜感激。

4

3 回答 3

4

您当然可以编写一个不断运行的守护程序/服务。有关入门教程,请参阅

http://www.netzmafia.de/skripten/unix/linux-daemon-howto.html

您的守护程序可以实现 SMTP(现有的库可支持此功能)以定期检查电子邮件帐户是否有新电子邮件并采取相应措施。

这是一个带有 SO 答案的问题,讨论了如何使用 Python 完成所有这些

如何使 Python 脚本像 Linux 中的服务或守护程序一样运行

于 2012-06-01T23:28:31.283 回答
3

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

  1. 使用 Vixie cron@reboot启动规范以标准用户身份在重新启动时启动您的守护进程。这个和每分钟的 cron-jobs 是唯一可以让用户轻松运行守护进程式服务的机制。

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

对于第二部分,寻找fork(2)系统调用的包装器。它将程序干净地分成两半——父母和孩子——并允许每个人从那时起继续独立执行。如果将来孩子和父母需要再次通信,那么也许看看PHP是否支持线程执行。

于 2012-06-01T23:31:19.927 回答
0

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

于 2012-06-01T23:35:51.137 回答