Поддержка PHP скриптов

Форум для обсуждения деталей разработки программы SAS.Планета

Модераторы: vdemidov, Tolik

Аватара пользователя
Parasite
Администратор
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раза
Поблагодарили: 508 раз

Re: Поддержка PHP скриптов

Сообщение Parasite »

Да тебе просто памятник надо поставить. Нерукотворный.
Уж сколько тут копий было переломано на тему хидеров - не подсчитать, а вопрос решился за неделю приложения рук. :)
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Изображение
zed
Гуру
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз
Поблагодарили: 568 раз

Re: Поддержка PHP скриптов

Сообщение zed »

Не надо мне памятник, я ещё живой)

Но вот помощь со скриптом не помешает. Для случая, если сервер закрывает соединения, всё понятно и работает хорошо (запускаю параллельно 4 загрузки - нагрузка на проц. 0-3%), но вот в случае с кипаливом, даже 1 загрузка умудряецца загрузить проц на 30-50% (это, 2-х ядерник-то!).

Вот что я нагородил и что нагружает проц:

Код: Выделить всё

// отправляем запрос серверу
    fputs($fp, $request); 
	
    while (!preg_match('/\\r\\n\\r\\n$/', $responseHeader)){
		$responseHeader.= fread($fp, 1);
	}
	
	//парсим заголовки
	$headers = http_parse_headers($responseHeader);
	
	if ($debug) print_r($headers);
	
	$MIMEType = $headers["Content-Type"];
	$content_length = $headers['Content-Length'];
	if ($debug) print $content_length."\r\n";
			
	socket_set_blocking($fp, 0);
	while (strlen($responseBody) != $content_length ){
		$responseBody .= fgets($fp, $content_length);
		usleep(100);
	}

Очевидно, всё из-за неблокирующего режима работы сокета и считывании заголовков по одному байтику... но иначе не получается забрать ответ - соединение-то не разрывается и fgets висит до бесконечности :(
zed
Гуру
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз
Поблагодарили: 568 раз

Re: Поддержка PHP скриптов

Сообщение zed »

SAS.Planet.110414.Php.Debug.rar

В комплекте одна карта и по-умолчанию она работает через php. Поскольку оптимального варианта скрипта с Keep-Alive методом пока нет, работает по-старинке c "Connection: Close".
vasketsov
Специалист
Сообщения: 901
Зарегистрирован: 25 июл 2009, 21:15
Поблагодарили: 193 раза

Re: Поддержка PHP скриптов

Сообщение vasketsov »

Parasite писал(а):Lua и Perl предлагались ровно для того же с год назад, сейчас очередь PHP. Скорее всего - с тем же результатом. :)
Не нашёл тему про Perl. Она была вообще?

В итоге какие-то нерешаемые проблемы с PHP обнаружились, коли его нет, или просто традиционно выпилено и забыто?
Или это уже всё неактуально в связи с хедерами, постами и прочими куками в самом сасе?
Аватара пользователя
Parasite
Администратор
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раза
Поблагодарили: 508 раз

Re: Поддержка PHP скриптов

Сообщение Parasite »

vasketsov писал(а):
Parasite писал(а):Lua и Perl предлагались ровно для того же с год назад, сейчас очередь PHP. Скорее всего - с тем же результатом. :)
Не нашёл тему про Perl. Она была вообще?
Была. Инфа 146%
vasketsov писал(а): В итоге какие-то нерешаемые проблемы с PHP обнаружились, коли его нет, или просто традиционно выпилено и забыто?
Второе.
Наработки были и даже работали, но оно так и не пошло в основную ветку - скажем так.
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Изображение
vasketsov
Специалист
Сообщения: 901
Зарегистрирован: 25 июл 2009, 21:15
Поблагодарили: 193 раза

Re: Поддержка PHP скриптов

Сообщение vasketsov »

А в принципе это насколько актуально (perl или php)?
Я в том плане, что хедеры, посты и прочие куки в самом сасе есть.
По идее остались ярко выраженные предфимозные извращения. Типа как я из скрипта всё скачанное сразу в БД кладу, а сасу возвращаю сгенерённую "пустышку".
Или для квазиобычных применений тоже чё-то не хватает?
zed
Гуру
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз
Поблагодарили: 568 раз

Re: Поддержка PHP скриптов

Сообщение zed »

vasketsov писал(а):А в принципе это насколько актуально (perl или php)?
Уже по-моему не актуально. Да и некоторые плюшки САСа вроде интерфейсов качалки и proj4 в php/perl будет затруднительно пробросить по-моему.
vasketsov писал(а):Или для квазиобычных применений тоже чё-то не хватает?
Ну, периодически что-то всплывает - недавно тут где-то на форуме просили Base64 encoder/decoder в скриптах.
Tolik
Гуру
Сообщения: 2604
Зарегистрирован: 28 янв 2011, 10:38
Благодарил (а): 283 раза
Поблагодарили: 587 раз

Re: Поддержка PHP скриптов

Сообщение Tolik »

vasketsov писал(а):А в принципе это насколько актуально (perl или php)?
По-моему, не актуально. PHP пытались прикрутить, и они даже как-то работали, но это было очень громоздко и глюкабельно.
Потом появились хедеры и пр., и надобность отпала.
zed
Гуру
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз
Поблагодарили: 568 раз

Re: Поддержка PHP скриптов

Сообщение zed »

Tolik писал(а):Потом появились хедеры и пр., и надобность отпала.
Не так. Из-за того, что php не вошло в основную ветку, пришлось разработку забросить (так и не доведя до stable) и переключиться на допиливание паскаль-скриптов. И уже только потом, в них появились хидеры и ко.
Аватара пользователя
Parasite
Администратор
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раза
Поблагодарили: 508 раз

Re: Поддержка PHP скриптов

Сообщение Parasite »

vasketsov писал(а):А в принципе это насколько актуально (perl или php)?
Я в том плане, что хедеры, посты и прочие куки в самом сасе есть.
По идее остались ярко выраженные предфимозные извращения. Типа как я из скрипта всё скачанное сразу в БД кладу, а сасу возвращаю сгенерённую "пустышку".
Или для квазиобычных применений тоже чё-то не хватает?
Вот именно что advanced functionality частенько и не хватает.
Большинство юзаемых мною ресурсов юзаются мною через те или иные самоскреативленные проксики (в основном на перле - ибо php терпеть ненавижу). Часто проксики весьма сложны - например дешифрация данных или автоматическая поддержка\перебор логинов\ключиков и авторегистрация\автокапча при бане предыдущих, итд.
Если функционал того же перла в его полном виде* будет как-то совокуплен с сасом плотнее, чем через "бутылочное горлышко" http-запросов - то это будет весьма хорошо, и без ложной скромности - цены такой сборке не будет.

--
* - под полным функционалом подразумевается весь функционал доступный языку в системе (со всеми установленными в перла дополнительными CPAN-модулями и тд.) То есть, надо как-то звать того же перла с САСа, отдавать ему данные, а в ответ как-то получать выхлоп обратно в САС.
Если полные доступные в системе возможности языка ввести нет возможности\желания, и он может\будет как-то специально кастрирован (как это сейчас с паскальскриптом) - то наверное лучше и не трогать ничего. Смысла нет - проще продолжать быдлокодить свои быдлопроксики вот прямо сегодня и безо всяких кастраций языка\функционала. 8-)
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Изображение
Ответить

Вернуться в «Раздел для разработчиков программы SAS.Планета»