Как загрузить новый сайт, URL которого хранится в массиве каждую минуту - PullRequest
0 голосов
/ 19 февраля 2019

Мне нужно каждую минуту загружать другой сайт в свой браузер.URL сайтов сохраняются в массиве.Я не хочу использовать функцию сна, потому что она останавливает сценарий.В настоящее время первая страница не загружается.Как вы делаете это с помощью Java-скрипта или cron-заданий?

<?php
$pages = ["http://www.google.com", "http://www.amazon.de"];

foreach ($pages as $page) {
  header("Location: $page");
  sleep(5);
}   

На самом деле он должен загрузить google.com, а через минуту - amazon.com.

Ответы [ 3 ]

0 голосов
/ 19 февраля 2019

Да, этого нельзя достичь только с помощью PHP, вам нужно использовать javascript для перезагрузки страницы на стороне клиента. Следующий код может помочь вам, когда вы перенаправляете на ту же страницу с индексом массива, а затем загружаете веб-страницу в iframe.

<?php
    $i = isset($_GET['index']) ? $_GET['index'] : 0;
    $pages = ["https://www.google.com", "https://www.amazon.de"];
    echo $i ."--". count($pages);
    if($i < count($pages)) {
?>
<iframe src="<?php echo $pages[$i];?>"></iframe>
<script type="text/javascript">
    setTimeout(function(){ alert("Hello");
    window.location.href = "http://localhost/reload.php?index=<?php echo ++$i;?>"; }, 30000);

</script>
<?php
} else {
    echo "All Done."
}
?>

Надеюсь, это поможет вам !!!

0 голосов
/ 19 февраля 2019

PHP на стороне сервера.Это означает, что когда клиент подключается к вашему серверу с помощью браузера, ваш сценарий PHP создает содержимое для отображения и делает это только один раз за запрос.

Javascript на стороне клиента.Это означает, что ваш браузер запускает скрипт.Но после изменения URL-адреса просматриваемого в данный момент сайта у вас не будет никакой власти, поскольку он загружает собственные javascript скрипты (если они есть).

То, что вы хотите сделать, может быть достигнуто с помощьюframes (но перечисленные вами сайты не являются frame дружественными, и они все равно будут перенаправлены на себя, так что вы потеряете контроль при первой загрузке) или через браузер plugin, что является более сложным и пользователю придетсясначала установите plugin.

0 голосов
/ 19 февраля 2019

Вы не можете.HTTP не работает таким образом.

Вы можете перенаправить с запрошенного URL-адреса на другой URL-адрес, но тогда браузер перейдет на новый URL-адрес, и будет слишком поздно для отправки другого перенаправления сисходный URL.

Единственный способ, которым я могу придумать, это сделать то, что вы хотите, чтобы отображать циклические страницы во фрейме и использовать клиентский JavaScript, чтобы изменить его src на интервале.Это сработало бы, только если отображаемые страницы не блокировали кадрирование с X-Frame-Options (что делает http://www.google.com).

...