SASGIS

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

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

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

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

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

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

Tolik писал(а): скрипты интерпретируются только во время исполнения, из-за этого их невозможно полностью отладить (нет даже проверки синтаксиса скрипта в целом)

Кстати, для таких вещей специально написаны десятки IDE, к примеру ZendStudio:
скрытый текст: показать
    Zend Studio - профессиональная среда для разработки и отладки веб-проектов. Отличительной особенностью программы является возможность удаленной отладки и профайлинга. Отметим, что для удаленной отладки требуется установить Zend Studio Server, который представляет собой серверный модуль. В состав Zend Studio в качестве опции входит пакет PHP вместе с обширным списком предварительно скомпилированных расширений. Если у вас уже установлена предварительно сконфигурированная версия PHP, продукт Zend Studio легко интегрируется с ней. Также в пакет среды входит Zend Optimizer, являющийся серверным модулем для запуска закодированных с помощью Zend Encoder и Zend SafeGuard Suite скриптов, а также немного их ускоряющий. В седьмой версии Zend Studio появилась поддержка PHP 5.3, интеграция с Zend Framework и Zend Server, улучшено редактирование исходного кода и различные улучшения производительности программы.

    Возможности программы:
    » Интеграция с Zend Framework и Zend Server
    » Анализ кода и быстрое исправление
    » Быстрое создание нового файла
    » Поддержка версий PHP 4.x и 5.x
    » Подсветка синтаксиса кода
    » Использование шаблонов кода (PHP, PHPDoc, Новый Файл)
    » Обнаружение ошибок в режиме реального времени
    » Использование закладок
    » Встроенный внутренний браузер
    » Комментирование кода PHP
    » Поиск текста и элементов PHP кода
    » Поиск и замена текста в файлах
    » Интегрированный TODO механизм
    » Поддержка HTML и CSS
    » Отладка PHP кода
    » Использование панелей инструментов в IE и Firefox
    » И многие другие возможности
Изображение
Изображение
Изображение

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

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

Сообщение vasketsov » 05 апр 2011, 20:16

Tolik писал(а):Честно, говоря, мне не нравится то, что получается

Не останавливаясь на тонкостях, отмечу, что простого и жезелобетонно работающего решения никто и не обещал. Хотя бы по той причине, что по щелчку пальцев на стороне сервиса меняется мельчайшая особенность, а мы и вы сотоварищи на это будем смотреть как на новый чёрный ящик. Принципиально сас может только догонять сервисы по изощрённости их защиты. Так что если хочется контролировать процесс, всё равно придётся разобраться в деталях. Не php, так perl, или хоть на прологе с фортраном пишите прокси, сути это не меняет.
зы. По одному коннекту на один тайл - это то, что лично меня напрягает больше всего в предложенном решении.
vasketsov
Специалист
 
Сообщения: 901
Зарегистрирован: 25 июл 2009, 21:15
Благодарил (а): 0 раз.
Поблагодарили: 198 раз.

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

Сообщение zed » 06 апр 2011, 08:36

vasketsov писал(а):По одному коннекту на один тайл - это то, что лично меня напрягает больше всего в предложенном решении.

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

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

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

vdemidov писал(а):Разрешат с большей вероятностью, чем добавить PHP в основную ветку :mrgreen:

А почему бы и не добавить PHP в основную ветку, если оно будет работать и будет доведено до ума?
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Изображение
Аватара пользователя
Parasite
Администратор
 
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раз.
Поблагодарили: 512 раз.

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

Сообщение vdemidov » 06 апр 2011, 10:41

Вот когда будет доведено до ума тогда и посмотрим :)
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз.
Поблагодарили: 157 раз.

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

Сообщение zed » 09 апр 2011, 23:32

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

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

Сообщение Parasite » 10 апр 2011, 01:07

Confusion arises as to when PHP starts a new connection using all the
"persistent" versions of any function, and this depends entirely on how you
run your PHP.

In real CGI mode, that is, one process per script, persistent functions do the
exact same as their "temporary" equivalents.

If you have a threaded Apache MPM, this persistence will open a connection
per thread, but not immediately. Think of it as a single PHP instance for each
thread.

http://php.net/manual/ru/function.pfsockopen.php

По всей логике при выходе из нашего обработчика скрипта - он обязан подчищать за собой. Тогда как Апач например ПОСТОЯННО висит в памяти со всеми подгруженными модулями (включая и PHP) и может позволить себе и подержать что-нибудь до таймаута. Но Апача у нас по умолчанию - нет.
PHPшная библиотека грузится с САСом (и постоянно висит в памяти с ним), или только при вызове скрипта?
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Изображение
Аватара пользователя
Parasite
Администратор
 
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раз.
Поблагодарили: 512 раз.

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

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

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

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

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

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

Вообще-то, открывает. По-крайней мере на яндекс-картах, на которых я тестирую php:
Код: Выделить всё
(Request-Line):GET /tiles?l=sat&v=1.22.0&x=6&y=3&z=4&g=Ga HTTP/1.0
User-Agent:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727)
Host:sat01.maps.yandex.net
Pragma:no-cache


(Status-Line):HTTP/1.1 200 OK
Content-Type:image/jpeg
Last-Modified:Thu, 25 Dec 2008 08:55:27 GMT
Expires:Sat, 09 Jul 2011 07:49:28 GMT
Cache-Control:max-age=7776000
Content-Length:8279
Date:Sun, 10 Apr 2011 07:49:28 GMT
Connection:close

Но ситуация сильно улучшится со следующей версией SAS, где можно будет явно переопределять хидеры запроса. И вот тогда будет нормальный keep-alive:
Код: Выделить всё
(Request-Line):GET /tiles?l=sat&v=1.22.0&x=2&y=0&z=2&g=Ga HTTP/1.0
Keep-Alive:300
Connection:Keep-Alive
Referer:http://maps.yandex.ru/
User-Agent:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727)
Host:sat01.maps.yandex.net
Pragma:no-cache


(Status-Line):HTTP/1.1 200 OK
Content-Type:image/jpeg
Last-Modified:Thu, 25 Dec 2008 08:57:18 GMT
Expires:Sat, 09 Jul 2011 07:57:56 GMT
Cache-Control:max-age=7776000
Content-Length:8342
Date:Sun, 10 Apr 2011 07:57:57 GMT
Connection:keep-alive

P.S. Скорее всего, на дефолтный keep-alive влияют настройки IE. Поэтому у кого-то он может быть включён по-умолчанию, а у кого-то нет.

P.P.S. Точно, IE. По-умолчанию в нём отключён протокол HTTP/1.1 (т.е. используется HTTP/1.0). Если же в настройках IE включить HTTP/1.1, то сервер будет по-умолчанию отдавать keep-alive:
Код: Выделить всё
(Request-Line):GET /tiles?l=sat&v=1.22.0&x=3&y=2&z=2&g=Ga HTTP/1.1
User-Agent:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727)
Host:sat01.maps.yandex.net
Cache-Control:no-cache

(Status-Line):HTTP/1.1 200 OK
Content-Type:image/jpeg
Last-Modified:Thu, 25 Dec 2008 09:00:11 GMT
Expires:Sat, 09 Jul 2011 07:46:45 GMT
Cache-Control:max-age=7776000
Content-Length:8675
Date:Sun, 10 Apr 2011 08:06:23 GMT
Connection:keep-alive

ie.jpg

За это сообщение автора zed поблагодарил:
Tolik (10 апр 2011, 15:01)
Рейтинг: 5.26%
 
zed
Гуру
 
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз.
Поблагодарили: 568 раз.

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

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

Ну что ж, получился keep-alive и в скриптах :D.

И заметил интересный нюанс: поскольку серверов на многих сервисах несколько (на яндексе это 4 сервера sat01.maps.yandex.net .. sat04.maps.yandex.net), то для каждого сервера открывается по сокету. Но никто не запрещает работать только через один сервер и соответственно, через один сокет.
zed
Гуру
 
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз.
Поблагодарили: 568 раз.

Пред.След.

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

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

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