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

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

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

zed
Гуру
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз
Поблагодарили: 568 раз

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

Сообщение zed »

На моей длл-ке и с моими настройками - есть. Значит, как бы там ни было, теоретически возможна ситуация с мусором в хвосте ответа, а значит лишняя проверка не помешает. Если вдруг она начнёт кому-то мешать - будем думать как эту помеху убрать уже для конкретной ситуации.
Кстати, моя dll-ка - это официальные php версий 5.3.6 и 5.2.17, и что с ними может быть не так - хз.
Может тебе дллку от моей версии PHP слить?
Ну, давай ради интереса.
Аватара пользователя
Parasite
Администратор
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раза
Поблагодарили: 508 раз

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

Сообщение Parasite »

zed писал(а):Кстати, моя dll-ка - это официальные php версий 5.3.6 и 5.2.17, и что с ними может быть не так - хз.
Судя по роадмапу, там как раз меняли print() - переводили ее из встроенных конструкций языка в функции, если я правильно их понял. Короче, чего-то с ней там допиливали не так давно. Может быть поэтому.
Кстати, а ДЛЛка при вызове себя - читает настройки из php.ini? Если да - то может быть и в настройках что-то... В любом случае на моей стороне воспроизвести проблему не удается.
zed писал(а):Ну, давай ради интереса.
Угу. Чуть пожже тогда.
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Изображение
Tolik
Гуру
Сообщения: 2604
Зарегистрирован: 28 янв 2011, 10:38
Благодарил (а): 283 раза
Поблагодарили: 587 раз

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

Сообщение Tolik »

Вот написал скрипт - etokarta.com (работает только в Витебске и только на зуме 18).
Без PHP не работает, серверу не нравится всего лишь User-Agent, но я для порядка скопировал все хедеры.

Впечатления:
1. ничего не понял про дебаг. Как ни включал debug=1, $debug = true, никакой информации не увидел. Её можно увидеть, только если установлен PHP?
2. после каждой правки скрипта приходится перегружать САС - это очень неудобно
3. надо бы передавать в скрипт ещё один параметр - язык, для формирования $ErrStr на правильном языке
4. вообще писать очень трудно (непрограммисту (мне)). Надо написать несколько типовых образцовых скриптов.
Вложения
etokarta.zmp.zip
(4.74 КБ) 200 скачиваний
zed
Гуру
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз
Поблагодарили: 568 раз

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

Сообщение zed »

Tolik писал(а):Её можно увидеть, только если установлен PHP?
Её можно увидеть только если в скрипте будут либо критические ошибки по ходу исполнения (к примеру, невозможность соединиться с сервером от fsockopen), либо будут ошибки синтаксиса и php ругнётся на скрипт.
А $debug = true - это я тестировал скрипт из консоли и соответственно в критических местах выводил результаты работы в консоль.
2. после каждой правки скрипта приходится перегружать САС - это очень неудобно
Ставьте Preload=0 и можете редактировать во время работы сас. Но удобнее всего, отлаживать скрипты вначале из консоли, а потом уже в SAS.
3. надо бы передавать в скрипт ещё один параметр - язык, для формирования $ErrStr на правильном языке
Можно, но я бы этой строкой пользовался только в крайнем случае - SAS и сам умеет выводить соответствующие надписи, в зависимости от ответа. А вот если нужно вывести какую-то нестандартную ошибку, которой нет в SAS, тогда да.

За карту Витебска - спасибо, всё работает.

P.S. И до тех пор, пока не будет сообщено отдельно, скрипты не поддерживают Keep-Alive соединения. Каждый новый запуск скрипта - новое соединение с сервером (что обсуждалось в самом начале топика).
Tolik
Гуру
Сообщения: 2604
Зарегистрирован: 28 янв 2011, 10:38
Благодарил (а): 283 раза
Поблагодарили: 587 раз

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

Сообщение Tolik »

zed писал(а):Но удобнее всего, отлаживать скрипты вначале из консоли, а потом уже в SAS.
Для этого надо проинсталлировать полый пакет PHP? Где его взять?
zed писал(а):И до тех пор, пока не будет сообщено отдельно, скрипты не поддерживают Keep-Alive соединения. Каждый новый запуск скрипта - новое соединение с сервером (что обсуждалось в самом начале топика).
Я про это помню, но решил попробовать скопировать все хедеры, и это работает. Это (то, что запросе Keep-Alive, но сессия разрывается) как-то негативно сказывается на работе?

P.S. Кстати, SAS не открывает новую TCP-сессию на каждый тайл.

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

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

Сообщение zed »

Tolik писал(а):Для этого надо проинсталлировать полый пакет PHP? Где его взять?
Брать на офф. сайте: http://windows.php.net/download/
Можно в архиве или инсталяшку. Но инсталяшка раза в 2 больше весит.
Tolik
Гуру
Сообщения: 2604
Зарегистрирован: 28 янв 2011, 10:38
Благодарил (а): 283 раза
Поблагодарили: 587 раз

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

Сообщение Tolik »

zed, наши тестовые скрипты (YaSat и etokarta) не работают через прокси.
Вы уж допишите, пожалуйста, поддержку прокси в образцовый php-скрипт.

Кроме того, в Win 7 наблюдаются глюки:
после выхода из САС.Планеты появляется Exception EAccessViolation in module ntdll.dll,
2011-04-04_085304.gif
система вообще начинает глючить (окна нормально не переключаются, не всплывают и т.п.)

Также надо бы улучшить обработку ошибок. Например, когда нет связи (из-за прокси), на экране САС ничего не происходит, независимо от параметра debug, потом, секунд через 30, появляется окно:
2011-04-04_084621.gif
Аватара пользователя
Parasite
Администратор
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раза
Поблагодарили: 508 раз

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

Сообщение Parasite »

Tolik писал(а):zed, наши тестовые скрипты не работают через прокси.
Вы уж допишите, пожалуйста, поддержку прокси в образцовый php-скрипт.
А самим это сделать - Кришна запрещает? Там же буквально пара строк в случае http-proxy: :)
1. Коннектимся не на сервер:80, а на прокси:порт (например вместо $host = 'mt1.google.com ';$port = 80 - делать $host = '127.0.0.1 ';$port = 8080)
2. После приконнекчивания - просить не тайл относительно корня сервера, а полный УРЛ вместе с протоколом и именем сервера (вместо GET /tssrqs.jpg HTTP 1.1 - просить GET http://mt1.google.com/tssrqs.jpg HTTP 1.1).
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Изображение
Tolik
Гуру
Сообщения: 2604
Зарегистрирован: 28 янв 2011, 10:38
Благодарил (а): 283 раза
Поблагодарили: 587 раз

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

Сообщение Tolik »

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

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

Сообщение zed »

Вы уж допишите, пожалуйста, поддержку прокси в образцовый php-скрипт.
Конкретно момент с прокси:

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

if ($UseProxy && ($ProxyHost != '') ) {		
		$proxy_port = substr($ProxyHost, strpos($ProxyHost, ":") + 1 );		
		$proxy_host = substr($ProxyHost, 0, strlen($ProxyHost) - strlen($proxy_port) - 1 );	
		
		if ($ProxyUseLogin && ($ProxyLogin != '') && ($ProxyPassword != '') ) 
		$proxy_basic_auth = "Proxy-Authorization: Basic " . base64_encode("$ProxyLogin:$ProxyPassword") . "\r\n"; 
		else 
			$proxy_basic_auth = '';
		
		$request .= "GET http://" . $host . $doc . " HTTP/1.1\r\n".
					"User-Agent: Mozilla/5.0 Firefox/3.6.15\r\n".
					"Accept: image/png,image/*;q=0.8,*/*;q=0.5\r\n".
					$proxy_basic_auth.
					"Connection: Close\r\n".
					"Referer: http://maps.yandex.ru/\r\n\r\n";
					
		$host = $proxy_host;
		$port = $proxy_port;
	}
	else
		$request =  "GET " . $doc . " HTTP/1.1\r\n".
					"Host: " . $host . "\r\n".
					"User-Agent: Mozilla/5.0 Firefox/3.6.15\r\n".
					"Accept: image/png,image/*;q=0.8,*/*;q=0.5\r\n".
					"Connection: Close\r\n".
					"Referer: http://maps.yandex.ru/\r\n\r\n";
	
Я вчера немного исправлял момент с прокси: если в сас включено брать настройки из реестра, то $ProxyHost (ip:port) будет заполняться на стороне сас (я так понимаю у самого php к реестру доступа нет или крайне затруднён). Но вот если тот прокси ещё требует и авторизацию, то работать не будет - у юзера нужно как-то спросить логин/пароль. Пока что в раздумьях на эту тему.
Если же все настройки прокси (с авторизацией или без) прописаны в самом SAS, то всё работает.
Также надо бы улучшить обработку ошибок. Например, когда нет связи (из-за прокси), на экране САС ничего не происходит, независимо от параметра debug, потом, секунд через 30, появляется окно:
30 секунд - таймаут на соеденение стоит. И окошко появляется только в debug режиме.
Кроме того, в Win 7 наблюдаются глюки:
после выхода из САС.Планеты появляется Exception EAccessViolation in module ntdll.dll,
Хм, надо будет загрузить семерку и глянуть что ей там не нравится.
Ответить

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