Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Cделать DLL из программы на PHP
 
 автор: Eugene77   (04.08.2011 в 06:17)   письмо автору
 
 

Хочется прикрутить функцию написанную на РНР к другому приложению под windows.
Есть ли способ из РНР DLL сделать?

  Ответить  
 
 автор: Commander   (04.08.2011 в 08:24)   письмо автору
 
   для: Eugene77   (04.08.2011 в 06:17)
 

Нет. DLL - это скомпилированный файл, а PHP является интерпретируемым языком.

  Ответить  
 
 автор: cheops   (04.08.2011 в 09:25)   письмо автору
 
   для: Eugene77   (04.08.2011 в 06:17)
 

Если очень не втерпеж использовать PHP в Windows-программе, запускайте PHP-скрипт в отдельном процессе или потоке. Для этого нужно будет приложить к программе php.exe, нужные DLL-библиотеки и PHP-скрипт. Когда мне нужна Windows-программа "за два часа", я именно так и поступаю.

  Ответить  
 
 автор: grafen   (04.08.2011 в 15:14)   письмо автору
 
   для: cheops   (04.08.2011 в 09:25)
 

А у Вас не остался готовый исходник, а то интересно увидеть в действии такую штуку!

  Ответить  
 
 автор: cheops   (04.08.2011 в 15:42)   письмо автору
5.5 Кб
 
   для: grafen   (04.08.2011 в 15:14)
 

Остался, но он на С++ Builder, т.е. сильно на любителя, хотя конечно запуск идет на Windows API. Во вложении исходники одной из такой программ (PHP-логику выкладывать бы не хотелось, да я думаю, она вам и не нужна).

  Ответить  
 
 автор: grafen   (05.08.2011 в 12:46)   письмо автору
 
   для: cheops   (04.08.2011 в 15:42)
 

Спасибо!

  Ответить  
 
 автор: Eugene77   (04.08.2011 в 18:14)   письмо автору
 
   для: cheops   (04.08.2011 в 09:25)
 

>Если очень не втерпеж использовать PHP в Windows-программе, запускайте PHP-скрипт в отдельном процессе или потоке. Для этого нужно будет приложить к программе php.exe, нужные DLL-библиотеки и PHP-скрипт.
Этот вариант интересен, но я не очень понимаю как запустить отдельный процесс.
Язык на котором всё написано не поддерживает ветвления.
Но он поддерживает внешние DLL.
На стадии линковки прикручивает.
Возможно, если есть готовая DLL с функцией ветвления внутри, то через неё можно было бы попробовать запустить отдельный прцесс.
Или, скорее всего, я что-то в корне неправильно понимаю... никогда не программировал под windows

  Ответить  
 
 автор: cheops   (04.08.2011 в 20:34)   письмо автору
 
   для: Eugene77   (04.08.2011 в 18:14)
 

А что за язык и что за операционная система, где вы его запускаете? Я так понимаю речь идет об Windows, иначе бы не было речи об DLL... если честно я не так много языков знаю, которые позволяют подключать DLL, но не допускают ветвления (хотя согласен, есть таки)... Собственно если создать DLL на C++ запустить процесс с PHP-скриптом можно и от туда.

  Ответить  
 
 автор: Eugene77   (05.08.2011 в 18:45)   письмо автору
 
   для: cheops   (04.08.2011 в 20:34)
 

>А что за язык и что за операционная система, где вы его запускаете?
MQ4
Собственно если создать DLL на C++ запустить процесс с PHP-скриптом можно и от туда.
Вот это было бы здорово
Такую бы DLL универсальную, с функцией запуска произвольной прграммы...
Но, с другой стороны.. что надо запускаить?
Допустим, я запущу php.exe, он прочитает php.ini. А дальше?
Как он узнает, какой скрипт выполнять?

  Ответить  
 
 автор: cheops   (05.08.2011 в 19:25)   письмо автору
 
   для: Eugene77   (05.08.2011 в 18:45)
 

Так в параметре передадите путь PHP-файлу, если вам потребуется выполнить PHP-файл под Windows, вы запустите что-то вроде
php.exe D:/path/index.php
При запуске внешнего процесса всегда можно указать внешние параметры. Если будете CreateProcess() использовать, то прямо одной строкой можно будет передать все параметры - путь к php.ini, путь к PHP-файлу.

  Ответить  
 
 автор: Eugene77   (05.08.2011 в 19:37)   письмо автору
 
   для: cheops   (05.08.2011 в 19:25)
 

>Если будете CreateProcess() использовать, то прямо одной строкой можно будет передать все параметры - путь к php.ini, путь к PHP-файлу.
А где посмотреть синтаксис для этой строки?

  Ответить  
 
 автор: cheops   (05.08.2011 в 20:01)   письмо автору
 
   для: Eugene77   (05.08.2011 в 19:37)
 

Выполните команду в командной строке
php.exe --help > help.txt
В файле help.txt можно будет найти описание синтаксиса php.exe

  Ответить  
 
 автор: Eugene77   (06.08.2011 в 17:56)   письмо автору
 
   для: cheops   (05.08.2011 в 20:01)
 

Спасибо!

Кажется, один вопрос остался:
Где бы взять готовую DLLку с универсальной функцией запуска нового процесса?

  Ответить  
 
 автор: Eugene77   (07.08.2011 в 19:16)   письмо автору
 
   для: Eugene77   (06.08.2011 в 17:56)
 

Сам себе же и отвечу (может кому-то ещё пригодится)
Для запуска программ необходимо импортировать из системной библиотеки kernel32.dll функцию WinExec():

#import "kernel32.dll"
int WinExec(string lpCmdLine,int uCmdShow);

После этого в любом месте ее можно будет вызвать:

WinExec("php.exe -s -f",1);

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования