#php #logic #infinite-loop
#php #Логические #бесконечный цикл
Вопрос:
Я пытаюсь разобраться, как вы можете запустить следующий php:
$html = file_get_contents(curPageURL()); //where curPageURL() returns the current page URL
не вызывая бесконечного цикла
Редактировать
Мне нужно иметь содержимое всей отображаемой страницы в переменной.
Я пытался:
if(!isset($_COOKIE['page_fetch'])){
$html = file_get_contents(curPageURL());
setcookie('page_fetch',$html, time() 20,'/');
} else {
$html = $_COOKIE['page_fetch'];
}
Комментарии:
1. Я пытаюсь разобраться, зачем вам это делать…
2. Вы, по сути, делаете
10 GOTO 10
.3. Возможно, если вы включите то, что пытаетесь сделать, это может помочь. Как написано в вопросе, вы не можете делать то, что хотите, без бесконечного цикла.
Ответ №1:
Я не уверен, зачем вам это нужно, но не могли бы вы передать переменную, указывающую ей на остановку?
if (!$_REQUEST['stop']) {
$url = curPageURL() . '?stop=1';
$html = file_get_contents($url);
}
Комментарии:
1.
$url = curPageURL() . '?stop=1';
хотя это может быть ошибкой: вcurPageURL()
:oele.com/some/page?index=4 ?stop=1
уже могут быть параметры GET, которые не будут заполняться$_REQUEST['stop']
Ответ №2:
Не может быть, чтобы это не привело к бесконечному циклу.
То, о чем вы спрашиваете, можно объяснить на этом вымышленном примере:
function hi() {
echo '<div>';
hi();
echo '</div>';
}
Итак, ответ, скорее всего, таков: вы этого не хотите! Вероятно, вы пытаетесь сделать что-то еще, но недостаточно хорошо это объясняете. Итак, начните с определения того, чего вы на самом деле пытаетесь достичь.
Ответ №3:
Вы не можете. Это, по определению, бесконечно рекурсивный.
Я предполагаю, что вы хотите немного другую версию текущей страницы (т. Е. Ту, которая больше не загружается). Смотрите ответ от newtron о том, как это сделать.
Ответ №4:
Я не знаю, в чем проблема с файлом cookie, возможно, в максимальном размере или тайм-ауте, когда содержимое отправляется с клиента на сервер.
Но поскольку вам нужно значение на стороне сервера, почему бы вам не использовать переменную сеанса в сочетании со значением времени, чтобы вы знали, истек ли срок его действия?