PHP无限循环。我看不到错误

时间:2018-11-03 16:24:00

标签: php

我需要帮助来了解在此循环中哪里出错了。

当我检查webhook.log文件时,看到以下内容

0123405162734051627340516273405162734560712345670123456701234567012345670

哪些变量“ i”的值显然在上面,而for循环没有结束,我不明白为什么。

for ($i=0; $i < count($chats); $i++)
{    
    $data = [
        chatId => $chats[$i],
        body => $base64img,
        filename => $nombreimg[1],
        caption => $arr["message"]["caption"]
    ];

    $json = json_encode($data);
    $url = 'https://XXXX.chat-api.com/instanceXXXX/sendfile?token=XXXXXXXXXXXXX';

    $options = stream_context_create(['http' => [
        'method'  => 'POST',
        'header'  => 'Content-type: application/json',
        'content' => $json
        ]
    ]);

    $result = file_get_contents($url, false, $options);
    file_put_contents("webhook.log", $i, FILE_APPEND);
    sleep(15);
}

预先感谢

2 个答案:

答案 0 :(得分:0)

我认为您需要它来检查$ chats数组的内容,验证$ chats是否具有Assign元素。

  if(sizeof($chats) > 0){
     loop...
  }

答案 1 :(得分:0)

如果我们假设您的PHP脚本仅包含此代码,则: 您的日志文件内容表明脚本有多个实例同时使用该文件。与无限循环相比,这种内容的解释更为合理。

示例: 用户一个在浏览器中运行脚本,因此循环启动并在每次迭代中将数据添加到文件中。但是不幸的是,每次迭代都让脚本休眠了一段时间,因此另一个实例也开始或继续将数据附加到同一文件中。这解释了您的日志文件中的混乱情况。更多的是您同时运行同一脚本的不同实例,更多的内容熵将变得更糟。

但是,如果您的脚本包含更多您不发布的代码,则内容表明您在嵌套循环中误用了$ i变量,这可能导致无限循环并导致日志文件中的这种熵级别...