Marta
Зарегистрирован: 22.12.03
Сообщения: 60
|
Добавлено: 20/01/04 в 03:12
|
|
Дело в том, что я пишу некий скрипт на пхп и встала перед вот какой проблемой: я загружаю файл с другого сервака и пишу:
Код: | $file=file("http://levyhost.nah/text.asp?a=1&b=2&c=3&text=KissMyAss"); |
потом достаю нужную инфу и без проблем, но когда текст "KissMyAss" становиться по-длинее типа "IWillFuckYouErvryDayUntilYouDie", то сервер естсественно начинает ругаться, мол длинная очень строка. Что мне делать, как передать длинный текст в этом случае asp-шнику на др. серваке, ведь я не могу передать переменной, т.к. напрямую я эту страницу не загружаю, да мне это и не надо! Как выйти из этой ситуации?
|
K началу
|
|
|
ivango
Зарегистрирован: 09.11.02
Сообщения: 823
|
Добавлено: 20/01/04 в 05:21
|
|
Функции fsockopen, fputs, fgets, а так же изучение синтаксиса HTTP-запроса типа GET... и ваши волосы снова мягкие и шелковистые а попка сухая и здоровая.
|
K началу
|
|
|
Marta
Зарегистрирован: 22.12.03
Сообщения: 60
|
Добавлено: 20/01/04 в 06:37
|
|
видно ты не совсем понял, мне нужно передать значение переменной с большим текстом, причем должна иммитировать именно процесс GET, но в реале я не я ничего этм методом не передаю, вникни, да и плюс как я могу что-то вставить с помощью приведенных тобой функций, если файл находиться на другом серваке, не моем... think about!
|
K началу
|
|
|
Marta
Зарегистрирован: 22.12.03
Сообщения: 60
|
Добавлено: 20/01/04 в 06:59
|
|
мне, если грубо описать надо сделать:
Код: | $file=file("http://levyhost.nah/text.asp?a=1&b=2&c=3&text=KissMyAss");
echo $file[19]; |
вот...
|
K началу
|
|
|
bog
Зарегистрирован: 07.11.02
Сообщения: 1595
|
Добавлено: 20/01/04 в 08:32
|
|
1. у меня вроде работают и длинные строки, так что может просто пишешь неправильно.
2. ивангоу правильно сказал, через сокеты по хорошему такое делать надо, но если не умеешь то...
3. смотри мануал по команде curl - она меньше глючит. Если версия РНР старая то можно делать через exec... и команда в шеле curl...
|
K началу
|
|
|
WEBoy
Зарегистрирован: 10.04.03
Сообщения: 68
|
Добавлено: 20/01/04 в 09:46
|
|
У метода GET ограничение на 255 байт, при большей длине получам 414 ошибку (Request-URI Too Long), так что делай через сокеты методом POST.
зы: RFC 2616
|
K началу
|
|
|
Marta
Зарегистрирован: 22.12.03
Сообщения: 60
|
Добавлено: 20/01/04 в 09:53
|
|
спасибо, а как бороться вот с этим: Fatal error: Maximum execution time of 30 seconds exceeded ???
|
K началу
|
|
|
WEBoy
Зарегистрирован: 10.04.03
Сообщения: 68
|
Добавлено: 20/01/04 в 10:07
|
|
void set_time_limit (int seconds)
Set the number of seconds a script is allowed to run. If this is reached, the script returns a fatal error. The default limit is 30 seconds or, if it exists, the max_execution_time value defined in the configuration file. If seconds is set to zero, no time limit is imposed.
|
K началу
|
|
|
Weber
Зарегистрирован: 03.10.03
Сообщения: 1276
|
Добавлено: 20/01/04 в 10:50
|
|
Marta писал: | спасибо, а как бороться вот с этим: Fatal error: Maximum execution time of 30 seconds exceeded ??? |
set_time_limit(0); - в самом начале программы напиши...
|
K началу
|
|
|
arachnO +
Зарегистрирован: 25.07.03
Сообщения: 340
|
Добавлено: 20/01/04 в 15:31
|
|
Marta писал: | спасибо, а как бороться вот с этим: Fatal error: Maximum execution time of 30 seconds exceeded ??? |
или в php.ini - max_execution_time или в .htaccess - php_value max_execution_time
или set_time_limit(0) в начале скрипта
|
K началу
|
|
|
bog
Зарегистрирован: 07.11.02
Сообщения: 1595
|
Добавлено: 20/01/04 в 16:47
|
|
set_time_limit больше 30ти - первый шаг к убийству сервака
если у тебя за 30 секунд не успевает что то просчитать - значит либо скрипт неправильно написан, либо он использует слишком большие обьемы данных. Так что или переписывай, либо пиши на перле, он для некоторых целей лучше (в частности для работы с сокетами и большим обьемом файлов)
|
K началу
|
|
|
Sash
Зарегистрирован: 27.03.03
Сообщения: 249
|
Добавлено: 20/01/04 в 16:54
|
|
bog писал: | set_time_limit больше 30ти - первый шаг к убийству сервака
|
к тому же на реальных хостингах возвожности увеличивать время как правило нету. Так пакостить только на дедике своем можно.
|
K началу
|
|
|
arachnO +
Зарегистрирован: 25.07.03
Сообщения: 340
|
Добавлено: 20/01/04 в 16:57
|
|
bog писал: | set_time_limit больше 30ти - первый шаг к убийству сервака |
не обязательно - опять же зависит от задачи. может это скрипт к которому раз в сутки обращаются и он генерить кучу статики. тогда легко может и не хватить 30 секунд.
еще раз ИМХО - для каждой задачи свои условия
|
K началу
|
|
|
Yahook
Зарегистрирован: 18.11.01
Сообщения: 1094
|
Добавлено: 20/01/04 в 17:18
|
|
Я как-то сталкивался с похожей проблеммой. Есть вариант установить в max_execution_time какое-нить очень большое число, не знаю правда хорошо это или нет:), но все работало. Или же попытаться разбить твою задачу на несколько мелких, чтобы можно было уложиться в 30 сек.
|
K началу
|
|
|
Weber
Зарегистрирован: 03.10.03
Сообщения: 1276
|
Добавлено: 20/01/04 в 19:29
|
|
bog писал: | set_time_limit больше 30ти - первый шаг к убийству сервака |
У меня скрипт есть... запускается раз в сутки... работает.... минут 20 (!!!) %))))) Оптимайзил, как мог! %) На перле, правда.... Причем, только локально, т.е. ничего не качает и не смотрит нигде %)
|
K началу
|
|
|
perlmaster
Зарегистрирован: 27.02.03
Сообщения: 455
|
Добавлено: 20/01/04 в 22:08
|
|
1 скрипт кроном - это не страшно, это всего лишь лишний процесс, хоть и кушающий ресурсы, но в одиночку А вот если столько работают скрипты из-под юзеров - то это пиздец с большой буквы, что видимо и хотел сказать bog.
|
K началу
|
|
|
Pentarh
Зарегистрирован: 05.04.03
Сообщения: 1377
|
Добавлено: 20/01/04 в 22:09
|
|
http://awm.all-sex-links.com/os_url_parser.htm
На, не парься создавать велосипеды. Класс ПХП для работы скрипта в режиме броузера.
Кстати, я помоему решил проблемму с медленным fsockopen. Протрасив запросы скрипта, пришел к выводу, что сервер ждет некоторое время после принятия данных (Keep-Alive: 300 секунд). Получается, что Keep-Alive иногда серваками принимается по умолчанию. Тогда делаем так. В моем классе перед соединением добавляем хидер:
Код: | $URL->AddHeader("Connection","close");
|
Вуаля! fgets шустро забирает ответ и сразу же закрывается сокет.
|
K началу
|
|
|
perlmaster
Зарегистрирован: 27.02.03
Сообщения: 455
|
Добавлено: 20/01/04 в 22:52
|
|
Pentarh: Посмотрел твою тулзу - блин, классная вещь! А как красиво написано, прямо конфетка! Респект!
Все учицца!
|
K началу
|
|
|
Marta
Зарегистрирован: 22.12.03
Сообщения: 60
|
Добавлено: 20/01/04 в 22:59
|
|
Я не совсем поняла, что вы мне на говорили, но по большому счету у меня скрипт выглядит следующим образом:
Код: | <? $text="I"."Will"."Fuck"."You"."Until"."You"."Die"."That"."is"."All" $file=file("http://levyhost.nah/text.asp?a=1&b=2&c=3&text=$text"); echo $file[19]; ?> |
Вот и все, здечсь оптимизировать нечего, дело в том, что я просто передаю строкой этому text.asp некоторые данные, после чего долго жду пока он генериться, а после это из всей сгенерированной страницы (а текста там не мало) ищу только одну строку, вот и уходит время... на генерацию, на поиск строки и т.п.... Вот так, надеюсь вы поняли, что я имела в виду..
|
K началу
|
|
|
Marta
Зарегистрирован: 22.12.03
Сообщения: 60
|
Добавлено: 20/01/04 в 23:25
|
|
Извиняюсь, но решила все на палцах рассказать.
А вообще дело обстоит так, я вам поясню для наглядности. Дано: левый сайт, и на нем асп-шная страница с погодой, которой передаются методом пост дата, страна, город и т.п. Так вот, я, просто открываю этот уже с генерированный файл, передавая ему строку типа
Код: | $file=file("http://pogoda.com/pogoda.asp&contry= Russia&city=Moscow&date=10-10-03") |
ну и т.п.... так вот, я посылаю эту строку, затем генериться этот файл у них, после чего ищу из всего этого нужную мне строку... и просто ее вывожу, вот и вся суть!
|
K началу
|
|
|
perlmaster
Зарегистрирован: 27.02.03
Сообщения: 455
|
Добавлено: 21/01/04 в 01:52
|
|
Marta: Вам же посоветовали - юзайте сокеты и будет вам щастье прямо оптом!
Код: | $socket=fsockopen("www.pogoda.com",80); $query_string="contry=Russia&city=Moscow&date=10-10-03";
$query="GET /pogoda.asp?$query_string HTTP/1.0\r\n" . "Connection: close\r\n" . "Host: www.pogoda.com:80\r\n" . "User-Agent: IE \r\n\r\n";
fputs($socket,$query);
// тут читаем ответ сокета и парсим как нам угодно
fclose($socket);
|
|
K началу
|
|
|
Marta
Зарегистрирован: 22.12.03
Сообщения: 60
|
Добавлено: 21/01/04 в 09:10
|
|
Огромное всем спасибо!!!! Вроде начинаю разбираться!
|
K началу
|
|
|