php и Delphi

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Link
Сообщения: 3
Зарегистрирован: 21 фев 2005, 17:15

Скажите как правильно использовать php из Delphi?

Интерфейс проги сделан через TWEBBrowser/
Имеются зачатки Сервера - конектятся через IE сотрудники, заполняют формы.
Хотелось бы теперь интерфейс зашаблонить. и сделать на PHP, а больше всего нужен php, для формирования отчётов, что-бы когда новый вид отчёта понадобится не трогать прогу, а просто добавить новый шаблон, который выщит нужные сведения по MySQL, и представит инфу в HTML Формате.
Аватара пользователя
AiK
Сообщения: 2287
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

Link, что-то вопрос не очень понятен. Ты делаешь собственный web-сервер и хочешь, чтобы он запускал php?
Как CGI приложение его запустить несложно: php.exe filename.php.
Даже самый дурацкий замысел можно воплотить мастерски
Link
Сообщения: 3
Зарегистрирован: 21 фев 2005, 17:15

В смысле у меня не WEB веб сервер, а просто программа, просто интерфейс HTML (ну нравится мне так и всё тут).... Пока я писал прогу успел освоить PHP, и MySQL (ну не совсем до конца).
В проге у меня уже использовалось что-то вроде шаблонов, тока в самопридуманном, и самостоятельно интерпретируемом формате (я добавил возможность вставлять части других файлов(что-то типа макросов с параметрами), вызывать из HTML функции моих форм, которые и выполняли работу и ещё пару фишек), но хотелось бы сделать это более распространёнными и отлаженными способами, и заодно закрепить знания.
То-Есть Покажите плиз, как при наличии php ПРАВИЛЬНО им пользоваться, из форм дельфи, и с его помощью интерпретировать php шаблоны.

То-есть ЗАБУДЬТЕ о сервере. программа должна запустить PHP для своих шаблонов, и сама получать результаты.

Я ХОЧУ узнать, как ПРАВИЛЬНО запустить php для обработки файла, и получить результат. Должен ли я запускать PHP.exe и если да, то с какими параметрами, или может можно подгрузить какую-нибудь DLL из PHP и в ней содержатся нужные функции.
Аватара пользователя
AiK
Сообщения: 2287
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

Link, я ж тебе написал. Запусти в командной строке php.exe с одним параметром - имя скрипта. Результат выводятся в stdout. Точно так же работает и perl, впрочем как и любая другая CGI-прилада. Вызвать можно при помощи CreateProcess.
Даже самый дурацкий замысел можно воплотить мастерски
Link
Сообщения: 3
Зарегистрирован: 21 фев 2005, 17:15

Дело в том, что нет файла со скриптом. PHP скрипт формируется программой на лету, и было-бы очень плохо каждый раз сохранять его в файл. Также помойму арсточительно для каждого мелкого скрипта заново запускать экзешник. нельзя ли его один раз загрузить php.exe, и по мере надобности потоками передавать ему скрипты.
Аватара пользователя
AiK
Сообщения: 2287
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

Link, по-моему тебе не остаётся ничего иного, как брать исходники на http://www.php.net/ и смотреть что там да как.
Наверняка предусмотрен какой-никакой механизм написания плагинов для PHP...

З.Ы: а вообще-то ты писал про то
как ПРАВИЛЬНО запустить php для обработки файла
Даже самый дурацкий замысел можно воплотить мастерски
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

В смысле у меня не WEB веб сервер, а просто программа, просто интерфейс HTML (ну нравится мне так и всё тут).... Пока я писал прогу успел освоить PHP, и MySQL (ну не совсем до конца).
Вот то-то и оно, что если Вы хотите сделать правильный WEB-интерфейс, то Вам нужно либо

а) взять какой-нибудь готовый WEB-сервер. (Я как-то пользовал уникальную вешь WEB+POP+SMTP+FTP+PROXY, весит что-то типа 100Kb и стоит что-то около 100руб. Поищу, ссылку закину) И вот на нем ваш сервер приложений реализовать как CGI-приложение. Тогда HTML-файл не надо сохранять, а выводить в стандартный поток, т.е. Writeln. (Читайте подробнее про CGI)

или

б) Написать свой WEB-сервер. Пусть он обрабатывает только команды GET и POST, т.е. будет сильно урезанный, НО к нему напрямую будет подключаться IE и получать контент.

Только в этих двух случаях не требуется сохранять файл на диск.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Поищу, ссылку закину
Нашел

http://home.lanck.net/mf/srv/

Только там уже было много доработок, и цена уже 300р :) ))
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Дело в том, что нет файла со скриптом. PHP скрипт формируется программой на лету, и было-бы очень плохо каждый раз сохранять его в файл.
Про это ответил выше
Также помойму арсточительно для каждого мелкого скрипта заново запускать экзешник. нельзя ли его один раз загрузить php.exe, и по мере надобности потоками передавать ему скрипты.
Используй CreateProcess с перенаправлением потоков.
Многократно в различных форумах по Delphi обсуждалось (и есть примеры исходников) как запустить процесс и перехватывать потоки ввода-вывода.

Если perl.exe умеет висеть не выгружаясь (до тех пор пока ему в стандартный поток ввода не попадел символ ^Z (конец файла)), то можно, наверное и один раз запусить.... Но тут Вас ждет море других проблем: Нужна ли многопоточность? Успеет ли Ваше приложение обслужить всех клитентов....

Я бы не стал изобретать велосипед, а просто сделал бы CGI-шку. Причем для кросс-платформенности хорошо бы просто несколько (для Win32/Solaris/...) маленьких CGI-шлюзов, которые обращались бы по TCP/IP к Вашему приложению. А уж WEB-сервер сам будет запускать perl.exe столько раз сколько надо и уж наверняка те кто пишут WEB-серверы этот вопрос очень хорошо проработали...

Кстати, CGI-шлюз на WEB-сервере это очень хорошее решение, имеющее в последствии большие перспективы: Например CGI-шлюз можно научить обращаться не к одному Вашему серверу приложений, а к нескольким для распределения нагрузки и/или резервирования...

Смотрите в будущее! :)
Ответить