1

背景:

我目前有一个用 PHP 编写的守护进程。当我编写 PHP 时,我知道 PHP 并不是解决这个问题的最佳解决方案,但它是我当时可以访问的,而且我正在做的事情使 PHP 变得更加理想。

实际上,我在 PHP 中使用了两个守护进程。两者都是带有 set_time_limit(0) 的简单 while(true) 循环。一个人比另一个人更喜欢崩溃(这不是问题,因为我有一个 cron 可以在它崩溃时重新启动它),我猜这是因为网络活动增加。

无论如何,守护进程:

守护程序 1:该守护程序从外部服务器请求信息,非常密集地循环通过该数据(大约 10 多个 foreach 的)并将其插入数据库。它正在 24/7 执行此操作。这个守护进程每天晚上 11:59 运行是至关重要的。

守护进程 2:该守护进程请求相同的数据。但是,当它遍历该数据时,如果对找到的某些数据起作用,并且如果确实如此,则发出外部网络请求。它经常提出这样的请求。如果它运行正常,大概每隔几分钟就会发生一次(如果它崩溃并且需要重新启动或冻结,请求将会增加......)这个守护进程绝对喜欢崩溃。不过,崩溃没关系。这个守护进程也喜欢冻结它必须被杀死才能重新开始工作的地方。

问题:

好吧,两次请求相同的数据(目前每个脚本每秒两次)效率极低。我需要将它们合并为一个守护进程。但是,守护进程 1 很关键,需要完成它的工作。如果合并后有更多错误的守护进程导致守护进程崩溃,我可能会遇到问题。

所以,问题:

我想我可以创建新的守护进程来在脚本之外发出请求。我的意思是当新的守护进程需要发出网络请求时(这会真正减慢脚本并可能导致更多问题),它会调用另一个脚本(不会阻止主脚本)。例如,新的守护进程需要发出 20 个网络请求,它可以通过调用另一个脚本来同时发送这 20 个请求来处理它们。这需要守护进程的工作,可能会导致更少的崩溃,我不需要两次请求相同的数据。

4

0 回答 0