0

我有一个看起来像这样的 php 脚本:

if(isset($_FILES["file"]["name"])){
    for($i=0; $i<count($_FILES["file"]["name"]);$i++) {

        // move file to folder
        move_uploaded_file($_FILES["file"]["tmp_name"][$i],
          "/pathToFolder/" . $_FILES["file"]["name"][$i]);

        //execute script on file

        exec('wscript "../Run_Proc.vbs"');

    }
}

try {
    $db = new PDO("mysql:host=".$hostname.";dbname=test;charset=utf8", $username, $password);
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}

$query = "SELECT * FROM test ORDER BY temp_id DESC LIMIT 1";
$stmt = $db->query($query);
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

echo json_encode($rows);

基本上,我通过 html 页面上传文件并针对它们运行外部 VBscript。我最初是通过将所有文件(一次)移动到指定文件夹,然后调用 VBscript 在该文件夹中的所有文件上运行来解决这个问题的(这大约需要 3-4 分钟)。

所以我决定一次移动一个文件,然后为每个文件执行一次脚本,这样每次执行脚本时我都可以通过我的 php 轻松处理错误。但是,我开始看到超时错误:

Fatal error: Maximum execution time of 30 seconds exceeded

引用我的 exec() 语句之后的行。

起初这对我来说没有意义,因为我的 VBscript 运行时间超过 30 秒,之前没有任何错误。我猜这与我多次致电 exec 的事实有关,有人能告诉我这里发生了什么吗?一旦我只想知道为什么它没有按预期工作,回到只调用 exec() 并不是什么大不了的事:-)

是的,我知道您可以暂时延长时间限制,但似乎我不应该这样做....VBScript 肯定不会运行超过 30 秒,并且 php 脚本的运行时间相同时间,那么导致这种情况的多个呼叫是什么原因?

4

0 回答 0