2015-02-13 3 views
1

я добавил следующий код, чтобы показать файлы внутри каталогаPHP скрипт продолжает работать indefinetly

$exclude = array("index.php","cssheadertop.php","cssheaderbottom.php"); 
$cssfiles = array_diff(glob("*.php"), $exclude); 
for($i=0;$i<=5;$i++){ 
    $filename = "http://8mags.com/lessons/css/".$cssfiles[$i]; 
    outputtags($filename,true,true); 
} 

Я не знаю, почему, но он продолжает работать до бесконечности. функция outputtags не является проблематичным, поскольку ниже код работает отлично

$exclude = array("index.php","cssheadertop.php","cssheaderbottom.php"); 
$cssfiles = array_diff(glob("*.php"), $exclude); 
for($i=0;$i<=5;$i++){ 
    $cssfile = array_rand($cssfiles); 
    $filename = "http://8mags.com/lessons/css/".$cssfiles[$cssfile]; 
    outputtags($filename,true,true); 
} 

работает отлично.

Вот код outputtags

function outputtags($filename,$other,$programming) 
{ 
$html = file_get_contents_curl($filename); 
$doc = new DOMDocument(); 
@$doc->loadHTML($html); 
$nodes = $doc->getElementsByTagName('title'); 
$title = $nodes->item(0)->nodeValue; 
$metas = $doc->getElementsByTagName('meta'); 
for ($i = 0; $i < $metas->length; $i++) 
{ 
$meta = $metas->item($i); 
if($meta->getAttribute('property') == 'og:title') 
    $ogtitle = $meta->getAttribute('content'); 
if($meta->getAttribute('property') == 'og:image') 
    $ogimage = $meta->getAttribute('content'); 
if($other) 
{if($meta->getAttribute('property') == 'og:description') 
    $ogdescription = $meta->getAttribute('content');} 
} 
echo '<p style="margin:0;"><a href='.$filename.' target=_blank>'.$ogtitle.'</a></p>'; 
if(!$other) 
echo '<a href='.$filename.' target=_blank><img style="margin:0 0 40px 0;" src="'.$ogimage.'" alt=""></a></br>'; 
if($other) 
{ 
if(!$programming) 
echo '<a href='.$filename.' target=_blank><img src="'.$ogimage.'" alt=""></a></br>'; 
echo '<p style="margin:0 0 40px 0;">'.$ogdescription.'</p>'; 
} 
} 

Редактировать после написания exit; в конце концов, как предложено в комментариях я получил

array(8) { [0]=> string(12) "3dbutton.php" [1]=> string(15) "basicbutton.php" [2]=> string(19) "basictextshadow.php" [5]=> string(11) "cssmenu.php" [6]=> string(21) "csstexteffectlogo.php" [7]=> string(22) "glossyroundbuttons.php" [8]=> string(18) "glowtextshadow.php" [10]=> string(26) "transitionhoverbuttons.php" } 

Наконец после использования Еогеаспа сценария все еще продолжает работать в течение длительного времени любые предложения

foreach ($cssfiles as $cssfile) { 
$filename = "http://8mags.com/lessons/css/".$cssfiles[$cssfile]; 
outputtags($filename,true,true); 
} 
+0

Он должен быть 'outputtags()' ничто другое не может вызвать бесконечный цикл здесь. BTW: Почему вы только перебираете первые 5 файлов? Добавьте отчет об ошибках и сообщите нам об ошибках: ' 'Также покажите нам свой полный сценарий – Rizier123

+0

По крайней мере, пост' outputtags() 'также как и Rizier123 говорит, что это может вызвать цикл или повлиять на цикл, в котором вы его используете. – colmde

+0

Эй, я редактировал код, проблема из-за переменной $ i, я ничего не изменил, кроме переменной I, но первый фрагмент работает неопределенно –

ответ

0

Ваши ключи массива 0,1,2,5,6 , 7 и т. Д. Вот почему он ломается, когда не используется случайным образом, потому что он ищет ключи 3 и 4. Вам нужно повторно ввести свой массив или использовать «для каждого», а не итерировать по клавишам численно.

$exclude = array("index.php","cssheadertop.php","cssheaderbottom.php"); 
$cssfiles = array_diff(glob("*.php"), $exclude); 
for($i=0;$i<=5;$i++){ 
    $filename = "http://8mags.com/lessons/css/".$cssfiles[$i]; 
    outputtags($filename,true,true); 
} 

При выполнении сценария,

$filename = "http://8mags.com/lessons/css/".$cssfiles[3]; 
$filename = "http://8mags.com/lessons/css/".$cssfiles[4]; 

не существует, поэтому он ломается.

Вы отправляете http://8mags.com/lessons/css/ в свои выходные данные().

Смежные вопросы