C ++,Python或PHP,无限循环

时间:2014-01-14 09:32:58

标签: php python c++ mysql

所以我需要创建一些执行循环来使用mysql和xml(解析它)做一些事情。

为此,我需要使用PHP,但是每个人(php devs)都知道php有脚本执行的时间限制。所以php出局了。

下一个是C ++,我想这样做,但这并不像我第一次想到的那样简单。

最后一个是python,我认为这是最好的方法,但我对它没有深入了解。

所以基本问题是 - python能做不定式循环吗?它是“脚本执行限制”还是我可以像C ++一样创建while(true)并且永远不会结束?

ADDED:问题已经解决,因为发现解决方案不使用python(这是主要问题)

2 个答案:

答案 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或者其他什么。