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

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

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

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

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

Сообщение zed »

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, есть и по-проще и полегче. Другими словами, возможностей море - было бы желание писать :).
vasketsov
Специалист
Сообщения: 901
Зарегистрирован: 25 июл 2009, 21:15
Поблагодарили: 193 раза

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

Сообщение vasketsov »

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

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

Сообщение zed »

vasketsov писал(а):По одному коннекту на один тайл - это то, что лично меня напрягает больше всего в предложенном решении.
Будет оптимизация и будет поддержка keep-alive. Уже даже знаю как оно будет выглядеть.
Аватара пользователя
Parasite
Администратор
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раза
Поблагодарили: 508 раз

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

Сообщение Parasite »

vdemidov писал(а):Разрешат с большей вероятностью, чем добавить PHP в основную ветку :mrgreen:
А почему бы и не добавить PHP в основную ветку, если оно будет работать и будет доведено до ума?
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Изображение
Аватара пользователя
vdemidov
Гуру
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз
Поблагодарили: 157 раз

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

Сообщение vdemidov »

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

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

Сообщение zed »

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

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

Сообщение Parasite »

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/
Изображение
zed
Гуру
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз
Поблагодарили: 568 раз

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

Сообщение zed »

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

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

Сообщение zed »

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
Гуру
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз
Поблагодарили: 568 раз

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

Сообщение zed »

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

И заметил интересный нюанс: поскольку серверов на многих сервисах несколько (на яндексе это 4 сервера sat01.maps.yandex.net .. sat04.maps.yandex.net), то для каждого сервера открывается по сокету. Но никто не запрещает работать только через один сервер и соответственно, через один сокет.
Ответить

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