让PHP脚本循环永远从队列系统执行计算作业

dro*_*son 4 php amazon-sqs

目前我有一个perl脚本,它在我的服务器上永远运行,检查SQS以获取要计算的数据.这个脚本已经运行了大约6个月,没有任何问题.

所以,现在我想切换到PHP的CLI,并让脚本永远循环.主要是因为我对PHP更熟悉.

基本上,

$i="forever";
while($i==="forever"){
    doSomething();
    sleep(10);
}
Run Code Online (Sandbox Code Playgroud)

该脚本将执行shell_exec("/ shell_script.sh"); 这可能需要2个小时才能完成.这会触发最大执行时间或类似时间吗?

这样"好"吗?如果没有,有哪些替代方案?

Ric*_*ams 6

您需要确保将脚本的最大执行时间设置为零,以便不会施加时间限制.你可以从PHP文件中执行此操作,

set_time_limit(0);
Run Code Online (Sandbox Code Playgroud)

或者您可以在php.ini文件中进行设置.(有关更多信息,请参阅set_time_limit上的PHP手册).除此之外,你的方法应该工作正常.

但是,没有必要设置变量并检查它以便永远循环,

$i="forever";
while($i==="forever")
Run Code Online (Sandbox Code Playgroud)

你可以简单地做while(true)while(1).


Jus*_*ier 5

就个人而言,我会使用Python或Perl来执行此类任务.PHP实际上更像是一种用于编写网站和服务的特定于域的语言.

  • PHP绝对不是最适合这项工作的工具,但它确实有效 - 我已经编写了几个这样的脚本,它们运行了几个月而没有问题.通常.你必须要小心内存使用情况.如果你的组织精通PHP,而不是其他很多,那么就可以说不引入新语言了.在理想的世界中,当然,你总是使用最好的工具来完成这项工作,而你却有时间学习新的语言,但这并不总是现实. (2认同)