| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Долго грузит Сайт и проблема с сокетами |
| Автор: EugenyPavlenko 9.4.2008, 22:14 | ||||||
| Здравствуйте, Все что мне нужно, это загрузить содержание сайта в массив по строчкам. Делаю так:
Проблема в том, что скрипт грузится, отрабатывает ровно 15 секунд и только тогда что-то выдает... Я пробовал грузить сайты большого содержание (40000 символов) и совсем маленькие: 129 символов... Те что маленькие и среднии они грузились 15 секунд и выводились А те которые побольше - занимало 15-20 секунди вывод... Я не могу понять в чем дело: почему он ждет 15 секунд и потом начинает что-то делать? или почему он тормозит? чего он ждет? Я планировал что он просто загрузит и сразу выведет.. т.е скорость работы зависит от размера загружаемого сайта... но грузить файл 129 байт 15 секунд.... Если предположить, что там лимит на выполнение скрипта 15 секунд, то зачем он все это время что-то там делает? Пробовал установить лимит 2 секунды но мне выдалась ошибка что я не могу это сделать из-за какого-то safe_mode Так же я пробовал действовать через сокеты:
Выдает вот что:
23 строчка это там где сокет открывается.... Не подскажете как мне решить проблему 15-ти секунд и что там за недоразумение с сокетом? Заранее спасибо! |
| Автор: Fortop 10.4.2008, 00:12 |
| 1. размер загружаемого сайта 2. время тратится на соединение твоего сайта с чужим, и только затем отдается информация тебе. Т.е. еще скорость соединения. 3. Что у тебя содержится в $p? Порт, вообще-то, задается вот так - http://www.mysite.com:8080/123.html или http://www.mysite.com:21/123.html В зависимости от того, на какой ты подключаешься. |
| Автор: EugenyPavlenko 10.4.2008, 08:39 | ||
| Fortop, так что, он так долго соединяется с сервером? в $p у меня название хоста как в цитате... Менял на: www.mysite.com - ошибка пропала, НО грузится он теперь 25 секунд и в ответ всегда выдает:
|
| Автор: Fortop 10.4.2008, 12:01 | ||
сходи сюда почитай по то, как устанавливать таймаут при соединении и чтении из сокетов. http://ua2.php.net/manual/ru/function.fsockopen.php |
| Автор: capitan 10.4.2008, 12:28 |
| Dzuchara, забудь про сокеты и исспользуй CURL http://ru2.php.net/manual/ru/function.curl-setopt.php |
| Автор: EugenyPavlenko 10.4.2008, 12:38 | ||
| MoLeX, твой скрипт грузит точно 20 сек. и ВЫВОДИТ! (сокеты заработали!) Fortop, никакой тайм-аут не помогает... Добавлено через 12 минут capitan,
ровно 15 секунд работает и выводит... Меня смущает что РОВНО 15, не 12 и 13 и не 17, а всегда ровно 15.. странно... |
| Автор: mishaSL 10.4.2008, 13:24 |
| Dzuchara, а если вариант с cUrl-ом попробовать: http://forum.vingrad.ru/forum/topic-163191/kw-curl-%D1%81%D0%BE%D0%BA%D0%B5%D1%82%D1%8B-fsockopen.html |
| Автор: Fortop 10.4.2008, 14:58 |
У сокетов есть 2ва вида таймаута. 1. Таймаут на коннект 2. на чтение запись потока http://ua2.php.net/manual/ru/function.stream-set-timeout.php 3. Насчет 15 секунд Попробуй прочесть с другого сайта, например www.google.com И посмотри на результат. И вообще, в чем конкретно у тебя задача? Зачем тебе читать страницу в массив? |
| Автор: EugenyPavlenko 10.4.2008, 17:34 | ||||||
| Всем большое спасибо! Вы не поверите, но сейчас запускаю те же скрипты, но работают уже как надо - практически моментом... не пойму в чем дело. Наверное хостер что-то исправил.... Кстати на google.com наверное какая-то блокировка, потому что пишет вот что:
Использую этот код:
Fortop,
А зачем мне читать страницу просто так? Моя задача: предоставление одного сервиса... НО: Для клиента_моего_клиента, когда он заходит на сайт моего_клиента, все должно выглядеть так, как будто сервис работает с сайта_клиента... т.е все содержание сайта_клиента должно оставаться + выводится мой сервис... По-этому когда к_м_к заходит на сайт м_к и жмет что-то на подобие "сабмит" идет запрос мой сайт, который берет содержание страницы откуда пришел к_м_к, обрабатывает его (вставляет в нужное место нужный код) и выводит... К_м_к кажется, что он остался на сайте м_к, но в УРЛ прописан уже мой сайт (недостаток). Я хотел делать через Ифрейм - но он глючит. Еще можно делать простым попАпом, но попапы не все любят, не всем подходят.. Еще хотел делать Аяксом, но оказывается политика безопасности не позволяет грузить содержимое др. сайтов... А у этого варианта (при умелой реализации) только недостаток только то что в УРЛ будет уже мой прописан... Anyway, всем огромное спасибо! П.С: я все-таки надеюсь, что это мой хостер исправил, а не "само" исправилось. |