К списку форумов К списку вопросов
Засада с file(). Нужна помощь!
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, пробовал ее - работает нормально.
Скачать можно как обычно с хотскриптс.

К списку вопросов на форуме Веб-дизайн

>>