Php 服务器可以处理的时间有限制吗?

Php 服务器可以处理的时间有限制吗?,php,apache,mysqli,runtime,client-server,Php,Apache,Mysqli,Runtime,Client Server,我有以下文件,它处理单个XML文件并将其作为一行推送到数据库中。它适用于单个文件 现在我想把目录中的所有文件像这样放到数据库中,因此我编写了一个脚本来遍历目录并逐个推送其中的所有文件。而且是的,它确实工作了,但在处理了XX(可变)数量的文件后停止了 我认为我的XML文件可能有问题,所以决定只在目录中放一个XML文件(之前已经处理得很好),然后循环它,插入数百次,这样我就可以确认我的文件有问题。但是猜猜发生了什么 处理XX(可变)数量的文件后,处理停止。在我下面的例子中,经过多次尝试后,它在110

我有以下文件,它处理单个XML文件并将其作为一行推送到数据库中。它适用于单个文件

现在我想把目录中的所有文件像这样放到数据库中,因此我编写了一个脚本来遍历目录并逐个推送其中的所有文件。而且是的,它确实工作了,但在处理了XX(可变)数量的文件后停止了

我认为我的XML文件可能有问题,所以决定只在目录中放一个XML文件(之前已经处理得很好),然后循环它,插入数百次,这样我就可以确认我的文件有问题。但是猜猜发生了什么

处理XX(可变)数量的文件后,处理停止。在我下面的例子中,经过多次尝试后,它在110(计数器val)、111、99等处停止。它应该在那里处理1000个文件

<?php
include_once '../includeTop.php';

header ( 'Content-type: text/xml' );

echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
$dir = "../../newHotelFiles";
$file = NULL;
$fileName = "noFileName";

$processed = 0;
util::writeToLog ( $dir . '/progressData.tmp', "Files processed: $processed" );
try {

    echo XMLInterface::openTag ( "start" );
    for($counter = 0; $counter < 1000; $counter ++) {
        $dirHandle = opendir ( '../../newHotelFiles' );
        while ( false !== ($file = readdir ( $dirHandle )) ) {
            //process my files codes

                $processed ++;
                util::writeToLog ( $dir . '/progressData.tmp', "Files processed: $processed" );


            }

        }

    //util::writeToLog($dir.'/progressData.tmp', "Done ".$counter);
    }
    echo XMLInterface::closeTag ( "start" );
    exit ();
} catch ( Exception $e ) {
    echo XMLInterface::failure ( "Error occured. Written to the log file - $file.log" );
    util::writeToLog ( "../../newHotelFiles/$fileName.log", ExceptionHandler::error_msg ( $e ) );
    exit ();
}

?>


有什么问题?是脚本(我怀疑它在for循环不存在时是否有效)还是有我不知道的服务器端限制

php中有一个称为set_time_limit()的最大执行时间限制;(和其他人一起)


php中有一个称为set_time_limit()的最大执行时间限制;(和其他人一起)


由于时间限制,脚本可能正在中止。尝试修改脚本。

由于时间限制,脚本可能正在中止。尝试修改。

不太相关,但为什么要使用PHP来实现这一点?PHP是一种模板语言,而不是一种编程语言。将其导出到一个单独的脚本,这样您的Web服务器就不会占用太多的处理时间(使用Python或其他东西)。@tjameson恕我直言,意图并没有占到这么多,或者我是这么认为的。
PHP
,尽管我个人并不喜欢这种语言,图灵是完整的,非常适合做OP用它做的事情。此外,正如Perl所说,您可以在命令行上调用它,而不依赖于Apache、HTTP、CGI等。@footy您知道您可以作为解释器从命令行调用
PHP
?这很可能会消除超时错误的原因,如果代码的其他方面都很好,并且您不需要与HTTP、CGI或Apache相关的部分API(对不起,重复我自己),那么您肯定会过得更好。使用“php-f/path/to/file.php”。虽然并非所有的PHP发行版都配有命令行解释器,但它确实很方便。仅仅因为您可以使用指甲钳来固定文件,并不是说它是这项工作的最佳工具。使用模板语言在Web服务器上执行繁重的任务不是Web服务器的正确用法,并且可能会导致意外DoS,特别是对于任务相对较大的类似情况。没错,Apache将事情放在不同的线程中,但它仍然在同一个父进程下。我从未说过它在Web服务器上是正确的用法,事实上,我的大部分论点都是在命令行上调用它。请注意,我同意您的观点,即使用Web服务器作为通用脚本主机通常是一个糟糕的想法。但是你需要在“模板语言”这件事上放轻松——首先,
PHP
已经超过了这个标签,其次,我想听听你是什么造就了一种模板语言,为什么Perl、Python和Javascript等都不是事实上的模板语言?这是因为
PHP
使用XML处理指令吗?其实并不相关,但为什么要使用PHP来实现这一点呢?PHP是一种模板语言,而不是一种编程语言。将其导出到一个单独的脚本,这样您的Web服务器就不会占用太多的处理时间(使用Python或其他东西)。@tjameson恕我直言,意图并没有占到这么多,或者我是这么认为的。
PHP
,尽管我个人并不喜欢这种语言,图灵是完整的,非常适合做OP用它做的事情。此外,正如Perl所说,您可以在命令行上调用它,而不依赖于Apache、HTTP、CGI等。@footy您知道您可以作为解释器从命令行调用
PHP
?这很可能会消除超时错误的原因,如果代码的其他方面都很好,并且您不需要与HTTP、CGI或Apache相关的部分API(对不起,重复我自己),那么您肯定会过得更好。使用“php-f/path/to/file.php”。虽然并非所有的PHP发行版都配有命令行解释器,但它确实很方便。仅仅因为您可以使用指甲钳来固定文件,并不是说它是这项工作的最佳工具。使用模板语言在Web服务器上执行繁重的任务不是Web服务器的正确用法,并且可能会导致意外DoS,特别是对于任务相对较大的类似情况。没错,Apache将事情放在不同的线程中,但它仍然在同一个父进程下。我从未说过它在Web服务器上是正确的用法,事实上,我的大部分论点都是在命令行上调用它。请注意,我同意您的观点,即使用Web服务器作为通用脚本主机通常是一个糟糕的想法。但是你需要在“模板语言”这件事上放轻松——首先,
PHP
已经超过了这个标签,其次,我想听听你是什么造就了一种模板语言,为什么Perl、Python和Javascript等都不是事实上的模板语言?是因为
PHP
使用了XML处理指令吗?我为您慷慨地提供了正确的答案(不是讽刺)而喝彩,但我有这个(毫无根据的?)担心你只是让@footy用PHP+Apache品牌的猎枪射自己的脚:/我指的是评论中正确指出的事实,即涉及(生产)web服务器只处理fil
        set_time_limit(0); // sets to unlimited