Я уже что только не перепробывал перерыл весь этот сайт но ответ так и не нашел. проблемма следующая есть скрипт тита так PHP: ля ля тополя $i=100+200; .......; $fr=fopen('http://....', "rb"); ..........; $g=10+$i; Так вот собственно проблемма когда скрипт доходит до строчки с функцией fopen он ждет ответ, но иногда работа этой функции занимает время больше 300 секунд, что приводит к отключению скрипта т.к. на сервере стоит ограничение на выполнение скрипта 300 секунд вопрос: Как сделать так чтобы скрипт не стопорился на этой функции, а сразу шел дальше по коду и не важно откроит этот файл или нет. просто если усет открыть скрипт сделает одно если нет то другое
Ответ: организовать многопоточность. Я, увы, не умею этого делать. Начинать копать можно примерно отсюда: http://php.net/manual/en/ref.pcntl.html
Если fopen не может открыть данный URL, он выведет сообщение типа: Warning: fopen(http://blablabla.ru/bla.php) [function.fopen]: failed to open stream Я думаю, проблема в другом. В прицнипе можешь поппробывать так: PHP: <? .... if($fp=fopen(...)) { .... } else { что-то другое } Чтобы продлить время работы скрипт, в начале скрипта добавь: set_time_limit(секунды); 0 секунд = неограничено.
пишет Warning: fsockopen() [function.fsockopen]: unable to connect to http://......../ope.php?from=1258:80 (Unable to find the socket transport "http" - did you forget to enable it when you configured PHP?) что делать не пойму?
а они доки не читают. зачем. они думают, наверное, что можно еще и так сделать $fp = fopen('http://...',"w"); и будут долго удивляться пАчиму не работает...
в данный момент я использую так @fopen('http://.......ru/ope.php?from='.$fnf.'&tof='.$fnt, "rb"); и все работает только виснет так как время работы сприпта ope.php занимает много времени вот и виснит а суть вопроса как заставить работать скрипт ope.php и продолжить работу скрипта вызвавшего работу ope.php дальше p/s/ скрипт ope.php может очень долго выполнять свои функции и ограничения по времени его работы нет но есть ограничения у скриптов которые его вызывают
alp Попробуй так: $fp=fsockopen('www.site.ru/ope.php?from='.$fnf.'&tof='.$fnt,80,$errno,$errstr,10); Здесь 10 - таймаут в секундах на выполнение операции.
Ti Дык хоть через аякс - это он только в браузере не заметит времени обработки, а скрипт то застопорится.
Пробывал пишет Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: No such host is known. in ..... Warning: fsockopen() [function.fsockopen]: unable to connect to www........ru/ope.php?from=ppppppp:80 (Unknown error)
RTFM! Ламерство не знает границ. Последний раз отвечаю в тему, потом буду посылать к мануалу. PHP: <?php $get="GET /ope.php?from=$fnf&tof=$fnt HTTP/1.0\n\rHost: [url=http://www.site.ru]www.site.ru[/url]\n\r\n\r"; //Формируем GET-запрос $fp=fsockopen('www.site.ru',80); //Открываем сокет socket_set_timeout($fp,100,0); //Назначаем таймаут (100 - это секунды) fwrite ($fp,$get); //Отправляем GET-запрос if(fread($fp,1)) //Если получили какой-то ответ до истечения тайм-аута { print 'Скрипт выполнился'; } else { print 'Таймаут истек!'; } ?>
как я писал ранее смысол даже не втом чтобы прочитать или записать в этот файл (ope.php) что то задача состоит втом чтобы запустить скрипт ope.php с параметраме а функция fopen используеться лишь по этой причине