![]() |
![]() |
Zeratul 14.03.2004 - 19:03 |
У меня не работает подобный запрос: $temp = file ("http://www.megashop.ru/index.php?level=4&pid=13706113"); Причем только с этого сайта... Народ, объясните в чем проблема то? |
Cool 1 - 14.03.2004 - 21:36 | У меня file() не работал никогда с удаленными урлами :\ |
Zeratul 2 - 14.03.2004 - 21:41 | блин... как лечить то??? |
Zeratul 3 - 14.03.2004 - 21:42 | Есть задача - скачать ту страницу средствами PHP. Есть идеи как еще? |
Zeratul 4 - 14.03.2004 - 21:48 | А на мастерхосте пашет (я до этого в денвере гонял). Прикольно... |
Zeratul 5 - 14.03.2004 - 21:54 | но надо на локалхосте по-любому... |
Zeratul 6 - 14.03.2004 - 22:19 | Я что-то слышал про сокеты, но не работал. Можно как-то через них реализовать? |
Capo 7 - 14.03.2004 - 23:19 | На ASP , ASP,NET я бы подсказал... -( |
Уверенный 8 - 15.03.2004 - 00:36 |
Объясни разницу между мастерхостом и локалхостом :) Я не пойму, где у тебя денвер и где работало, а где нет. Кстати, а что пишет? |
Cool 9 - 15.03.2004 - 00:52 | Zeratul, а $f=fopen("http://www.megashop.ru/index.php?level=4&pid=13706113","r"); не работает разве? |
ZiNTeR 10 - 15.03.2004 - 01:48 |
Все дело в настройках php. Когда то, когда я переводил manual по PHP там писал я об этом allow_url_fopen boolean позволяет фунциям типа fopen получить доступ к удаленным файлам(рассположенным на других серверах) для полноправной работы. По умолчанию доступ к удаленным файлам разрешен. Вы можете обращаться к ним по протоколам ftp или http |
Zeratul 11 - 15.03.2004 - 10:10 |
Хм... самый прикол в том, что при запросе с других (!) ресурсов страниц все ок. С чего я медленно офигеваю. В принципе, сегодня придумал как решить. Мне нужен был локалхост чтобы было неограниченное время выполнения скрипта. Вот я и решил с локала запрашивать спецскрипт на мастерхосте (у меня там хостинг), а он в свою очередь будет тянуть данные откуда мне надо. |
DIVЕR 12 - 15.03.2004 - 10:19 |
Вот я ни разу не пользовался этим, но есть функция set_time_limit, которая позволяет управлять максимальным временем работы скрипта. Zeratul, попробуй, может быть с помощью неё скрипт сможет проработать подольше... . А также можешь попробовать CURL - уж очень богатая библиотека для работы со всякими http-(get/post/...), ftp-,... запросами... |
Zeratul 13 - 15.03.2004 - 10:40 |
to DIVER: хм... виртуальники много чего не позволяют. В т.ч. и эту функцию. Итак, у тебя есть 30 секунд... :) По CURL - подробнее можешь? Ссылку на описание. |
DIVЕR 14 - 15.03.2004 - 10:50 |
Zeratul, мой практический опыт использования CURL ещё не позволяет "учить" как пользоваться ею =))) Могу сказать, что в PHP-Manual довольно хорошо всё расписано. Например, вот так (расписано): <?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://www.example.com/"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_ехес($ch); curl_close($ch); ?> ЗЫ Ты занялся изучением регэкспов? =)))) |
buster 15 - 15.03.2004 - 11:30 | Пользуйся сокетами. |
Zeratul 16 - 15.03.2004 - 11:48 | to buster: Я про них еще в 6-м посте спросил. Если бы еще кто объяснил принцип их работы и примерчик привел - большое спасибо... |
buster 17 - 15.03.2004 - 13:06 | Вечером, если не кинет никто, примерчик тебе подсуечу. |
Уверенный 18 - 15.03.2004 - 14:06 | А если wget-ом стянуть в файл временный и его прочитать в переменную? Про перл я молчу. :) |
Mips 19 - 15.03.2004 - 14:21 |
buster, у сокетов тоже не всё гладко. Вот мне надо было делать опрос машины с таймаутов 1-2 секунды - не смог. Ставишь любое значение, таймаут всё равно дефолный (30 секунд). что то я allow_url_fopen у себя в php.ini и не нашёл. |
DIVЕR 20 - 15.03.2004 - 14:34 |
Вот-вот! у меня сейчас тоже есть одно web-приложение, расчитанное на много пользователей, которое я сейчас просто тестирую. Используются сокеты для проверки определённой информации. Я вот и не знаю, что и как буду делать, как только количество пользователей увеличится!.. 30-ти секунд явно не будет хватать, поэтому я уже долго думаю о том, как бы реализовать многопоточность в PHP. Пока что склоняюсь всё-таки использовать Apache путём посылки ему запроса по сокетам сделать одно "атомарное" действие. Т.о. можно распараллелить весь процесс. Т.е. послал запрос сделать кое-что для одного пользователя, и пусть этот процесс уже сам висит в памяти и выполняется, а остальная часть скрипта будет продолжать работать (т.е. продолжать раздавать подобные запросы =) ). Хотя над этим ещё думать и думать.... Или, мож, кто подскажет как реализовать многопоточность?.... |
Mips 21 - 15.03.2004 - 14:58 |
если вопрос стоИт об увеличении времени работы скрипта - тут и думать нечего, юзай set_time_limit. У меня была обратная проблема, мне нужно было не 30 секунд опрашивать, а 1-2 секунды максимум. Так и не смог, хотя в мануале всё красиво расписано, но не работает как надо. Что касается скрипта в фоновом режиме, тут только cron приходит на ум. |
buster 22 - 15.03.2004 - 16:36 | А нигде в настройках эти 30 секунд меньше нельзя? |
Mips 23 - 15.03.2004 - 16:43 |
сумничал типа? скрипт должен исполняться как и обычно, 30 секунд. За время работы он должен опросить 8 адресов с таймаутом 1-2 секунды. |
buster 24 - 15.03.2004 - 17:39 |
Я не сумничал, я спросил. В отличие от тебя, я на форум умничать не хожу - мне этого в жизни хватает ;) |
DIVЕR 25 - 15.03.2004 - 17:51 |
Mips!!! Так ведь для работы с сокетами можно устанавливать timeout!! Как при установлении связи на этапе fsockopen(..), так и для операций fputs и fgets!.. |
Mips 26 - 15.03.2004 - 18:08 |
buster, не зарывайся. DIVЕR, это по мануалу можно, но на практике параметр таймаута не пашет. Попробуй сам опросить пять несуществуюших серверов, установив таймаут пару секунд. По идее скрипт должен будет выполняться 10 секунд (5*2), но скрипт будет долбить 30 секунд первый же сервер и в итоге скажет, что произошёл таймаут выполнения скрипта. |
DIVЕR 27 - 15.03.2004 - 22:45 |
Странно... А ещё я где-то в мануале читал про то, что некоторые фокусы с таймаутами не работают в safe-mode (по-моему, тот самый set_time_limit). Может это быть причиной и для других таймаутов?.. |
buster 28 - 15.03.2004 - 23:11 | Mips, меряться ничем не будем. Просто не позволяй себе вольностей - и все будут жить дружно. |
buster 29 - 15.03.2004 - 23:13 |
Обещаные сокеты $zapros="GET /inf.pl?short=1&login=".urlencode($c_nic)." HTTP/1.0\r\n". "User-Agent: Mozilla/4.0 (comaptible; MSIE 5.5; Windows NT 5.1)\r\n". "Referer: http://www.kuban.ru/\r\n". "Content-type: application/x-www-form-urlencoded\r\n". "Host: $city.combats.ru\r\n\r\n"; if($fp=fsockopen("$city.combats.ru",80,$errstr,$errno,30)) { $claner=""; $lines=0; fputs($fp,$zapros); while(!feof($fp)) { $tmp=fgets($fp,4096); if(eregi("^([a-zA-Z0-9_]*)=([a-zA-Z0-9._:/,]*)",$tmp)) $claner.=$tmp; if(eregi("^Location:",$tmp)) $location=$tmp; } fclose($fp); } |
buster 30 - 15.03.2004 - 23:14 | Кое-что лишнее, думаю, разберёшься. |
Wsc 31 - 16.03.2004 - 17:56 |
Есть еще библиотека Snoopy на PHP, пробовал ее - работает нормально. Скачать можно как обычно с хотскриптс. |