所以我需要创建一些执行循环来使用mysql和xml(解析它)做一些事情。
为此,我需要使用PHP,但是每个人(php devs)都知道php有脚本执行的时间限制。所以php出局了。
下一个是C ++,我想这样做,但这并不像我第一次想到的那样简单。
最后一个是python,我认为这是最好的方法,但我对它没有深入了解。
所以基本问题是 - python能做不定式循环吗?它是“脚本执行限制”还是我可以像C ++一样创建while(true)并且永远不会结束?
ADDED:问题已经解决,因为发现解决方案不使用python(这是主要问题)
答案 0 :(得分:1)
99.9999%的时间,数据处理不需要无限循环。我可能会使用一个cron脚本,而C ++只是完全和完全矫枉过正。但是,如果您想在PHP脚本中使用无限循环:
<?php
set_time_limit(0);//no max exec time
while(true)
{
echo 'Still running',PHP_EOL;
}
请参阅手册here
之后,根据您正在处理的数据集的大小,您可能会达到内存限制(我认为PHP使用的默认RAM设置为128M)。这也可以通过将php.ini文件的memory_limit
设置更改为256M或更多......或者将其设置为-1来解决所有内存限制来解决。请参阅the man pages here。
<?php
set_time_limit(0);
ini_set('memory_limit', -1);
while(true)
{
//do stuff
if ($foobar === 'whatever') break;//exit script
}
同样,如果脚本是CLI脚本,则最大执行时间应该是无限的(默认情况下,PHP CLI模式没有max exec时间)。如果你的脚本看起来像这样:
<?php
require(realpath(__DIR__.'/lib/Xml.php');//include some script
require
'd文件无需再次调用set_time_limit
,因为您只是需要它。可以将require
行视为C样式标题:预处理器只获取该文件的内容,并将其粘贴到包含#include
指令的源文件中
但是,如果您希望一个进程处于活动状态所有时间,并且每隔一段时间就开始行动:看一下 node.js 。与PHP或Python相比,节点有1个不可否认的好处:闲置时它很好。使用事件(可能转换为某些低级别的中断)而不是while(true){}
循环,您很可能会显着降低系统负载
答案 1 :(得分:0)
我想每种语言都可以做这样的事情
$looping = true;
while ($looping) {
//magic here
if ($condition == true) {
$looping = false;
}
}
但是如果你解析一些东西,我更喜欢foreach $ line / $ word / $ character或者其他什么。