SASGIS

Веб-картография и навигация

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

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

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

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

Сообщение zed » 03 апр 2011, 12:13

На моей длл-ке и с моими настройками - есть. Значит, как бы там ни было, теоретически возможна ситуация с мусором в хвосте ответа, а значит лишняя проверка не помешает. Если вдруг она начнёт кому-то мешать - будем думать как эту помеху убрать уже для конкретной ситуации.
Кстати, моя dll-ка - это официальные php версий 5.3.6 и 5.2.17, и что с ними может быть не так - хз.

Может тебе дллку от моей версии PHP слить?

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

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

Сообщение Parasite » 03 апр 2011, 12:18

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/
Изображение
Аватара пользователя
Parasite
Администратор
 
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раз.
Поблагодарили: 459 раз.

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

Сообщение Tolik » 03 апр 2011, 17:31

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

Впечатления:
1. ничего не понял про дебаг. Как ни включал debug=1, $debug = true, никакой информации не увидел. Её можно увидеть, только если установлен PHP?
2. после каждой правки скрипта приходится перегружать САС - это очень неудобно
3. надо бы передавать в скрипт ещё один параметр - язык, для формирования $ErrStr на правильном языке
4. вообще писать очень трудно (непрограммисту (мне)). Надо написать несколько типовых образцовых скриптов.
Вложения
etokarta.zmp.zip
(4.74 KiB) Скачиваний: 84
Tolik
Гуру
 
Сообщения: 2603
Зарегистрирован: 28 янв 2011, 10:38
Благодарил (а): 277 раз.
Поблагодарили: 515 раз.

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

Сообщение zed » 03 апр 2011, 18:01

Tolik писал(а):Её можно увидеть, только если установлен PHP?

Её можно увидеть только если в скрипте будут либо критические ошибки по ходу исполнения (к примеру, невозможность соединиться с сервером от fsockopen), либо будут ошибки синтаксиса и php ругнётся на скрипт.
А $debug = true - это я тестировал скрипт из консоли и соответственно в критических местах выводил результаты работы в консоль.
2. после каждой правки скрипта приходится перегружать САС - это очень неудобно

Ставьте Preload=0 и можете редактировать во время работы сас. Но удобнее всего, отлаживать скрипты вначале из консоли, а потом уже в SAS.
3. надо бы передавать в скрипт ещё один параметр - язык, для формирования $ErrStr на правильном языке

Можно, но я бы этой строкой пользовался только в крайнем случае - SAS и сам умеет выводить соответствующие надписи, в зависимости от ответа. А вот если нужно вывести какую-то нестандартную ошибку, которой нет в SAS, тогда да.

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

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

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

Сообщение Tolik » 03 апр 2011, 20:42

zed писал(а):Но удобнее всего, отлаживать скрипты вначале из консоли, а потом уже в SAS.

Для этого надо проинсталлировать полый пакет PHP? Где его взять?

zed писал(а):И до тех пор, пока не будет сообщено отдельно, скрипты не поддерживают Keep-Alive соединения. Каждый новый запуск скрипта - новое соединение с сервером (что обсуждалось в самом начале топика).

Я про это помню, но решил попробовать скопировать все хедеры, и это работает. Это (то, что запросе Keep-Alive, но сессия разрывается) как-то негативно сказывается на работе?

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

P.P.S. Насчёт языка, как раз в моём скрипте есть нестандартное сообщение об ошибке.
Tolik
Гуру
 
Сообщения: 2603
Зарегистрирован: 28 янв 2011, 10:38
Благодарил (а): 277 раз.
Поблагодарили: 515 раз.

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

Сообщение zed » 03 апр 2011, 21:02

Tolik писал(а):Для этого надо проинсталлировать полый пакет PHP? Где его взять?

Брать на офф. сайте: http://windows.php.net/download/
Можно в архиве или инсталяшку. Но инсталяшка раза в 2 больше весит.
zed
Гуру
 
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз.
Поблагодарили: 525 раз.

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

Сообщение Tolik » 04 апр 2011, 08:37

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

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

система вообще начинает глючить (окна нормально не переключаются, не всплывают и т.п.)

Также надо бы улучшить обработку ошибок. Например, когда нет связи (из-за прокси), на экране САС ничего не происходит, независимо от параметра debug, потом, секунд через 30, появляется окно:
2011-04-04_084621.gif
Tolik
Гуру
 
Сообщения: 2603
Зарегистрирован: 28 янв 2011, 10:38
Благодарил (а): 277 раз.
Поблагодарили: 515 раз.

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

Сообщение Parasite » 04 апр 2011, 09:39

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/
Изображение
Аватара пользователя
Parasite
Администратор
 
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раз.
Поблагодарили: 459 раз.

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

Сообщение Tolik » 04 апр 2011, 09:54

Кришна позволяет, но сам я не хочу делать что-то плохо.
Пусть лучше программисты напишут красивый и правильный код, а потом любители типа меня будут его использовать в качестве шаблона.
Tolik
Гуру
 
Сообщения: 2603
Зарегистрирован: 28 янв 2011, 10:38
Благодарил (а): 277 раз.
Поблагодарили: 515 раз.

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

Сообщение zed » 04 апр 2011, 10:42

Вы уж допишите, пожалуйста, поддержку прокси в образцовый 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,

Хм, надо будет загрузить семерку и глянуть что ей там не нравится.
zed
Гуру
 
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз.
Поблагодарили: 525 раз.

Пред.След.

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2