2010-08-16 64 views
0

感谢您花时间阅读本文,我将不胜感激每一个回应内容的质量。 :)PHP重试脚本,直到成功或错误

我试图创建一个PHP脚本,重试另一个PHP脚本最多3次,直到显示错误消息。我在想也许这可以使用PHP循环完成?如果代码第一次成功运行,那么不需要重试3次,但是如果第一次运行不成功,那么应该重试php脚本最多3次,直到显示错误消息。

使用php编码,我设法创建一个脚本,使用“file_get_contents”从其他位置抓取/提取内容,然后为每个单词/数据提供一个php变量。所有这些都是通过从其他成员获得帮助来完成的(我非常感谢)。下面的代码是什么这一切:

$searchdata = file_get_contents('http://www.example.com'); 

list($no1, $no2, $no3, $no4, $no5, 
    $no6, $no7, $no8, $no9) = explode(" ", $searchdata); 

所以,我想添加某种循环,重试此脚本多达3次;如果它第一次不起作用。

要确定脚本是否工作在第一/第二/第三次,在使用“file_get_contents”时应该找到文本“#endofscript”或“failure”。文本“#endofscript”应该在变量“$ no9”上,而文本“failure”应该在变量“$ no2”上。如果发现除“#endofscript”或“failure”之外的其他内容应计为错误,应循环找到。如果在第三次尝试后仍未找到,是否可以显示错误消息?如“错误 - 请再试一次”。

谢谢你的一切协助,我会很感激每一个回复。如果您需要更多的细节,请随时询问。 :)而且,我真的很感谢这一点。 :)

回答

1
$retries = 0; 
$searchdata = null; 

while(!$searchdata && $retries < 3) { 
    $retries++; 
    $searchdata = file_get_contents('http://www.example.com'); 
    list($no1, $no2, $no3, $no4, $no5, $no6, $no7, $no8, $no9) = explode(" ", $searchdata); 
    if($no9 != '#endofscript' || $no2 != 'failure') { 
     $searchdata = null; 
    } 
} 

if($searchdata) { 
    list($no1, $no2, $no3, $no4, $no5, $no6, $no7, $no8, $no9) = explode(" ", $searchdata); 
    // DO STUFF 
} else { 
    echo 'Please try again.'; 
} 
+0

嗨马特威廉姆森,我真的很欣赏的回应,它似乎像你已经发布了一些惊人的编码。但是,似乎有一个小问题,当我运行代码时,php给了我错误“解析错误:语法错误,意外的T_INC”并且它在行5上。哪个是“retries ++”?部分。对不起,再次感谢您的回复。 :) – AUllah1 2010-08-16 20:54:38

+0

它应该是'$ retries ++',Matt忘记了'$'符号,所以PHP试图增加一个不存在的常量。 – 2010-08-16 20:56:19

+0

是的,纠正它。谢谢Marc – 2010-08-16 21:10:01