2017-07-07 70 views
1

在短:如何破解密码的代码需要超过53秒后执行,这样的事情:如何走出循环,如果PHP脚本的时间超过53秒执行

while (5 < 200) 
{ 
// do some work here, which will take around 1-6 seconds 

if (code this loop is running for more than 53 seconds) 
break; 

} 


如果你想知道,为什么我想这样做:

好吧,这是我在做什么:我从网络上的7个JSON页面复制数据,并将其插入到我的MySQL数据库。

的代码是这样的:

$start_time = microtime(TRUE); // Helps to count PHP script execution time 


connect to database 
$number = get inserted number into database 
while ($number > ($number+20)) 

{ 

7 Open JSON File link like this - "example.com/$number?api=xxxyyzz" 

Use Prepared PDO statements to insert data into MySQL 

} 
// Code to count PHP script execution time 
$end_time = microtime(TRUE); 

$time_taken = $end_time - $start_time; 

$time_taken = round($time_taken,5); 

echo '<p>Page generated in '.$time_taken.' seconds.</p>'; 

所以在我的情况,这需要约5.2秒来完成将所有数据的一个整个循环。但是一些JSON文件是空的,因此如果它们为空,则完成1循环只需要1.4秒。

因此,我想完成数百万个循环(从数百万个JSON文件中添加数据)。因此,如果我的代码全天候运行,则需要1个月才能完成我的任务。


但代码运行90秒后,我得到这个错误:enter image description here

我使用cron作业做任务。看起来像服务器给CRON工作提供同样的错误。

所以,我想做CRON工作每1分钟运行一次,所以我没有超时错误。


但我怕这怕什么如果脚本一半行添加数据和1分钟的车越过,它不添加数据转换成另一半行。然后在新的分钟开始后,代码从下一个$number开始。因此,如果我可以在53秒之后将break;退出循环(如果代码在52秒开始另一个循环,则在结束时中断,这将在58-59秒左右)。

我的意思是,我会把这个休息;代码就在循环结束之前(在}之前)。所以我不会退出循环,而数据插入到一半的行中。

+0

我认为你可以在休息功能的地方使用睡眠功能。 –

+0

睡眠功能延迟了代码执行时间,对吗?它怎样才能让我从服务器500错误中解脱出来? @AvinashKumarSingh兄弟? –

回答

0

我想你的PHP的max_execution_time等于90秒,你可以指定max_execution_timeset_time_limit,但我不认为这是一个很好的方法。

试试pcntlpthreads,它会为您节省很多时间。