繁体   English   中英

Rackspace,负载平衡,flush()和cURL

[英]Rackspace, load balancing, flush(), and cURL

首先,如果这个问题含糊不清或令人困惑,我道歉。 事实是,我对正在发生的事情感到很困惑,而且我对如何纠正它更加困惑。

我正在使用Rackspace云服务器。 正如您所希望的那样(如果您正在阅读此问题),Rackspace会使用负载均衡器,这种负载均衡器可以杀死持续超过30秒的脚本。 不幸的是,我正在处理一个涉及许多大文件传输的巨大处理脚本。 不用说,脚本有时可能需要一个小时才能运行。 幸运的是,这个脚本不需要经常运行。 不幸的是,我坚持使用Rackspace云 - 对于我的老板来说,升级根本不是一个选择。

通过使用PHP的flush()函数,加上一些琐碎的空白,我几乎总能避免这个超时问题。 这不是一个很好的解决方案,但考虑到我的限制并使用我的传输脚本,它的效果非常好。

...当我在浏览器中加载脚本时。

当我尝试使用cron作业调用脚本时,脚本会超时。 当我尝试从Hurl.it调用它时,它会超时 但是,当我在浏览器中加载它时,一切似乎再次起作用。

我该如何解决这个问题? 我需要使用cron作业调用此脚本,但无论我做什么,它似乎总是失败。

谢谢您的帮助!

取决于脚本的超时时间。

如果它是racksace负载平衡器超时,您可以通过API调整负载平衡器超时最多120秒。 如果您需要脚本运行的时间超过此时间,则可能需要将工作拆分为几个较小的部分。 无论如何,这是一个好主意,因为较长的执行时间会引发网络丢失问题,其中可以运行几个较小的脚本,并且每个脚本都更容易验证。

参考:

===如果你正在点击php.ini max_execution_time,那么每次迭代循环调用set_time_limit(20) (我对你的代码一无所知)或类似情况,都会不断重置计时器。

来自php.net:

调用时,set_time_limit()从零重新启动超时计数器。 换句话说,如果超时是默认的30秒,并且脚本执行25秒,则进行诸如set_time_limit(20)之类的调用,脚本将在超时之前运行总共45秒。

参考:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM