Вызов функции в другом языке
Я пишу программу на php, которая делает почти все, что ей нужно, но в какой-то момент мне нужно использовать функцию, написанную на python с использованием библиотеки mechanize, оба этих скрипта будут размещены на одном сервере.
Мои первые мысли, чтобы сделать CURL
вызовите все аргументы из скрипта php в скрипт python, а затем верните результаты функции обратно в скрипт php, используя CURL
,
Я довольно новичок в программировании и не уверен в лучших соглашениях, когда делаю что-то подобное, это мой рабочий процесс с использованием CURL
обычным способом это будет сделано или есть другой способ?
3 ответа
Если вам нужно иметь возможность распространять код PHP и код Python независимо, развертывать их на отдельных серверах и т. Д., То это разумно - вы делаете код Python веб-службой, код PHP вызываете этот веб-сервис и все готово
Но если скрипт Python всегда будет запускаться локально, обычно проще просто запустить его как программу - передать ему аргументы командной строки и / или стандартный ввод и получить его стандартный вывод. У PHP есть несколько разных способов сделать это:system
, popen
, exec
, passthru
- у всех есть разные достоинства и недостатки.
Например, с exec
звоните escapeshellarg
для каждого аргумента соедините их в строку, разделенную пробелами, с указанием пути к сценарию, вызовите exec
и вы получите результат обратно.
Вы всегда можете использовать exec
функционировать в php ( http://php.net/function.exec), если скрипт находится на том же сервере.
Но, пожалуйста, убедитесь, что вы знаете, что делаете, потому что функция мощная и может быть довольно неприятной, если ее использовать неправильно.
Я не знаю, насколько это хорошо (я не пробовал лично), но вы всегда можете попробовать это: