Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Для профи > Использованик CURL на динамической странице.


Автор: fuckerok 9.8.2005, 02:42
Пишу бота под чат (чат естесвенно не мой)
Надо получать страницу канала (где все сообщения)
Страница денамическая, тоесть не просто постоянно обновляется, а постоянно дополняется! (юзер отправил месагу, страница дополнилась)
Таким образом получить целиком страницу не получается, ибо она находится постоянно на конекте.
Вот функция которой я обычно беру страницу:
Код

    function Page($cookieStr, $url,$referer,$postf)
        {
                $ch = curl_init();
                curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)');
                curl_setopt($ch, CURLOPT_COOKIE, $cookieStr);
                 curl_setopt($ch, CURLOPT_URL, $url);
                 curl_setopt($ch, CURLOPT_HEADER,1);
                 if ($postf)
                 {
                 curl_setopt($ch,CURLOPT_POST,true);
                 curl_setopt($ch,CURLOPT_POSTFIELDS,$postf);
                }
                 curl_setopt($ch, CURLOPT_REFERER,$referer);
                  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                  $pageOut = curl_exec($ch);
                 curl_close($ch);


                  return $pageOut;
        }


Такая функция должа получить страниц "полностью", что в моём случае невозможно и программа просто повисает (она никак не может получить страницу полностью)
Хотелось бы увидить нечто подобное:
Функция которая получает денамическую страницу, забивая каждую строку в массив.
(Чтобы можно было обработать построчно)
Задача довольно сложная (для меня, ибо решения я так и не нашёл)
Не знаю возможно ли вообще подобное с помощью curl...

Извеняюсь за опечатку в сабже.
Модераторы, не сочтите за труд, поправте.

Автор: Mal Hack 9.8.2005, 13:01
Если ты пишешь в файл и из него берешь, то кто мешает в этот момет ставить блокировку на файл?
А вообще, зачем тебе получать полностью страницу. Получай заранее небольшое число строк и с нимим работай.

Автор: fuckerok 10.8.2005, 01:10
Цитата
Если ты пишешь в файл и из него берешь, то кто мешает в этот момет ставить блокировку на файл?

Яж говорю, что чат не мой. Мне надо получать страницу потока сообщений. (Получать - слово в реальном времени)
Цитата
А вообще, зачем тебе получать полностью страницу

В том то и дело, что страницу ПОЛНОСТЬЮ получить никак нельзя, ибо страница постоянно дополняется, она находится на потоке (сообщения идут).
Цитата
Получай заранее небольшое число строк и с нимим работай.

А можно по подробней? Как мне получить это кол-во строк? Ведь страница находится на потоке!

Тоесть в лутчшем случае хотелось бы написать функцию:
Цитата(fucker)
Функция которая получает денамическую страницу, забивая каждую строку в массив.

Поимаю, что полностью получить никак нельзя, но можно среагировать!
Например кто-то полсал сообщение, Оно добавилось в канал сообщений, функция загнала это сообщение в массив, а уж дальше можно проверить массив и как-то среагировать (например была посланна какая-то команда)
Сам wикл получения, он бесконечен, но может прирватся - зависит от информации в массиве.

Автор: fuckerok 23.8.2005, 05:17
проблема решена smile
Использовать соккеты куда интересней smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)