Php,等待5秒后再执行一个动作

时间:2011-07-18 09:23:31

标签: php

我有一个.php脚本,用于创建我的产品列表。 我在共享主机上,所以我不能做很多查询,否则我会得到一个空白页面。

这就是我现在使用我的脚本的方式:

script.php?start=0&end=500&indexOfFile=0  ->> make a product0.txt file with first 500 products

script.php?start=501&end=1000&indexOfFile=1 ->> product1.txt file with another 500 products

script.php?start=1001&end=1500&indexOfFile=2 ->> product2.txt file with last 500 products

如何修改脚本以便自动生成所有这些文件,以便每次手动更改链接时都不需要更改?

我想点击一个按钮来执行此操作:

制作带有前500种产品的product0.txt文件

等待5秒

与另外500个产品一起制作product1.txt文件

等待5秒

制作包含最后500种产品的product2.txt文件

8 个答案:

答案 0 :(得分:55)

使用:

sleep(NUMBER_OF_SECONDS);

答案 1 :(得分:22)

在开始操作之前,请使用

 sleep(5);

答案 2 :(得分:7)

或:

usleep(NUMBER_OF_MICRO_SECONDS);

答案 3 :(得分:0)

  

我在共享主机上,所以我不能做很多查询,否则我会得到一个空白页。

听起来非常奇怪。我有最便宜的PHP托管包,我可以找到我的上一个项目 - 它的行为不像这样。我不会支付一项服务。实际上,我甚至不知道如何配置服务器来复制这种行为。

无论它为什么会这样,在脚本中间添加睡眠无法解决问题。

由于您可能控制了产品目录,因此新产品应该相对不频繁(或者您是否尝试获取库存报告?)。如果您控制何时更改数据,为什么要自动运行脚本?或者你的意思是你已经拥有这些URL,并且当你一次运行一个URL时就会得到预期的文件?

答案 4 :(得分:0)

在2018年1月,唯一的解决方案对我有用:

<?php

if (ob_get_level() == 0) ob_start();
for ($i = 0; $i<10; $i++){

    echo "<br> Line to show.";
    echo str_pad('',4096)."\n";    

    ob_flush();
    flush();
    sleep(2);
}

echo "Done.";

ob_end_flush();

&GT;

答案 5 :(得分:0)

示例:Using sleep to add delay or increase execution time

让我们在延迟15秒后打印时间。

<?php
echo date('H:i:s');
sleep(15);
flush();
echo "<br>";
echo date('H:i:s');
?>

输出

11:36:19

11:36:34

答案 6 :(得分:0)

我用这个

    $i = 1;
    $last_time = $_SERVER['REQUEST_TIME'];
    while($i > 0){
        $total = $_SERVER['REQUEST_TIME'] - $last_time;
        if($total >= 2){
            // Code Here
            $i = -1;
        }
    }

您可以使用

function WaitForSec($sec){
    $i = 1;
    $last_time = $_SERVER['REQUEST_TIME'];
    while($i > 0){
        $total = $_SERVER['REQUEST_TIME'] - $last_time;
        if($total >= 2){
            return 1;
            $i = -1;
        }
    }
}

并运行代码=>

WaitForSec(your_sec);

示例:

WaitForSec(5);

OR 您可以使用睡眠

示例:

sleep(5);

答案 7 :(得分:-5)

<?php
    foreach($i = 0; i < 500; $i++){
       your_code;
       delay(3); // 3 seconds
    }
?>