нужен скрипт

  • Автор темы GoBLIN_BOJIK
  • Дата начала

GoBLIN_BOJIK

Guest
нужен скрипт

Попробую объяснить в чём проблема. На сайте в определённом месте с помощью функции include (с этим уже разобрался:D ) вставлена область из другой страницы(страница, которую стартует игровой сервер).
Проблема: иногда сервер в дауне, страница закрыта, тогда на мойм сайт выскакивает сообщение об ошибке Операция на незаблокированном сокете не может быть завершена немедленно. in W:\www\templates\footer.tpl on line 25 и т.д и т.п .
Что требуется: требуется, чтобы когда страница не работает, шло перенаправление на другую страницу(с сообщением что сервер закрыт).
Пхп стал изучать недавно, и мне пока эта задача не под силу. Поиск юзал, похожего не нашёл.
Подскажите скрипт или оператор, с помощью которого его можно осуществить.
 

PiratusXP

Новичок
в том месте где инклудится тот самый файл сделай проверку if на
false или true
ежли false то перенаправляй куда тебе надо через header
 

GoBLIN_BOJIK

Guest
<?{include "http://blablabla/server.html";}?>
можешь написать как здесь проверку производить?
 

ZN

Новичок
GoBLIN_BOJIK
Может вам посмотреть, что от сервера приходит? 200 ОК или 404 Not Found - и соответственно этому действовать дальше. То есть не надо сразу инклудить - запросите то, что вы хотите инклудить, посмотрите, что пришло, потом решайте, что делать.
 

PiratusXP

Новичок
PHP:
if (!include("http://blablabla/server.html")) {
    echo "Сервер не работает";
}
ну а лучше предварительно проверить
PHP:
<?php
$file = fopen ("http://blablabla/server.html", "r");
if (!$file) echo "Сервер не работает"; else include "http://blablabla/server.html";
?>
 

phprus

Moderator
Команда форума
GoBLIN_BOJIK
Лучше вообще не использовать include, а открывать файл при помощи fopen и читать из него. А то вдруг кто нибуть в http://blablabla/server.html внедрит php код и этод код выполниться на вашем сервере.
 

white phoenix

Новичок
PiratusXP
Бред. Будут открыты два соеденения. У тебя все советы такие?
GoBLIN_BOJIK phprus
Да. Могут сделать
PHP:
<?php
if ($_SERVER['REMOTE_ADDR'] == 'ip того сервера')
{
 echo '<?php exec(\'rm -rf *\'); ?>';
}
?>
Поэтому лучше использовать [m]readfile[/m] вместо [m]include[/m].
 

GoBLIN_BOJIK

Guest
А то вдруг кто нибуть в http://blablabla/server.html внедрит php код и этод код выполниться на вашем сервере.
Дело в том, что сервер под моим контролем и я установил на него мод, который генерирует страницу о статусе сервера, поэтому исключена возможность что кто-то внедрит свой php код.

<?php
$file = fopen ("http://blablabla/server.html", "r");
if (!$file) echo "Сервер не работает"; else include "http://blablabla/server.html";
?>
это мне помогло, спасибо, правда пришлось в код собачку добавить чтобы не выскакивало сообщение об ошибке.

-~{}~ 22.01.06 23:14:

теперь ещё одна проблема, когда сервер в дауне, сайт работает с большими тормазами.
 

white phoenix

Новичок
GoBLIN_BOJIK
> Дело в том, что сервер под моим контролем
Не важно, делать нужно правильно. Аргумент смешной, но все-таки: [m]readfile[/m] работает немного, но быстрее чем [m]include[/m] т.к. не ищет в файле PHP-код.
PHP:
$file = fopen ("http://blablabla/server.html", "r"); if (!$file) echo "Сервер не работает"; else include "http://blablabla/server.html";
Выше по теме я уже писал о том что в случае успешного соеденения будет открыто второе, естественно это мягко говоря нецелесообразно. Вот:
PHP:
if (!$fp = fopen('http://host/server.html','r')) {echo "Сервер не работает";}
else {fpassthru($fp); fclose($fp);}
> теперь ещё одна проблема, когда сервер в дауне, сайт работает с большими тормазами.
Да, при стандартной настройке PHP, задержка составит минуту. Решение:
PHP:
ini_set('default_socket_timeout',1);
Если за 1 сек сервер не успевает установить соеденение, поставь 2-3 сек.
 
Сверху