LINUX.ORG.RU

Как запустить php скрипт?

 ,


0

1

Есть два проекта - один на Tcl другой на PHP. Их надо срочно прикрутить один к другому. Вобщем-то требуется только как-то запускать php скрипты из Tcl. И все бы ничего, да только этим скриптам нужно скормить некоторый контекст (PHP ждет 5 массивов). Как правильно передать эти массивы в интерпритатор php, что бы быстро и не сложно?

Можно конечно сунуть эти все данные как параметр скрипта, например в виде JSON, а потом в PHP выковыривать их из $_SESSION, но что-то подсказывает мне что это не лучшее решение.

★★★★★

Самое простое - скормить php-cli сериализованные данные в STDIN, а в php уже распихать их по нужным массивам.

Либо php-cgi в тот же STDIN пихать фейковые запросы, погугли, видел такое обсуждение, но это конечно извращение.

bjorn
()

запустить это гогно как его и положено, т.е. апачем с mod_php или как-то иначе, делать http запросы /петросян

mashina ★★★★★
()
Ответ на: комментарий от mashina

Спасибо. Прога на tcl как раз и заменияет http сервер + механизм сессий и регулированя доступа пользователей...

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от Suntechnic

Из php который до этого и рулил сессиями.

блин..а названный php откуда их брал ? вряд-ли в сессионных переменных хранил. imho простое решение «в-лоб» передать данные сериализовав в (например)json и через stdin. Но это если массивы маленькие и все они стопудово нужны.

Иначе есть полёт для фантазии :)

MKuznetsov ★★★★★
()
Ответ на: комментарий от Suntechnic

просто open-ом [1] открываешь процесс php myprogram и в полученный дескриптор пихаешь сериализованный массив. Тут уж как душа пожелает. В php делаешь fread(STDIN) [2] и получаешь массивы. Как уже предложили выше можешь json или если это численные данные, то просто space-separated с завершением по \n.

[1] http://www.tcl.tk/man/tcl/tutorial/Tcl26.html

[2] http://php.net/manual/en/wrappers.php.php

qnikst ★★★★★
()
Ответ на: комментарий от qnikst

Человек развивающий PHP часть не должен прикладывать ни одного лишнего телодвижения - должен получить массивы на входе и работать как будто он прямо вот сайт делает...

Вобщем, спасибо всем за советы. В итоге решил самым тупым способом: - собираю скрипт который инициализирует массивы в переменную phpcode, потом добавляю к ней строку «require('$includefile');» и делаю «exec — php --php-ini $phpini -r $phpcode]»

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от Suntechnic

Человек развивающий PHP часть не должен прикладывать ни одного лишнего телодвижения - должен получить массивы на входе и работать как будто он прямо вот сайт делает...

даже если он свой сайт делает, то он не берёт массивы из воздуха, это или ENV или GET/POST/прочие хитрые функции для более правильного получения данных или CMD_LINE. Так, что всё равно придётся использовать какие-то соглашения. Хотя вышепредложенный вариант будет работать.

qnikst ★★★★★
()
Ответ на: комментарий от qnikst

Да, безусловно. Но так я думаю ему будет проще. И это не сайт - просто фронтенд для конфигурации одной приблуды управляющей доступами. Просто этой конфе потребовалось весьма сложной управление доступом к самой конфигурации...

Suntechnic ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.