|
|
|
| Задачка весёленькая, есть сервер в котором как объяснили админы на самом апаче стоит лимит времени 120 сек. возможно конечно проблема не в этом, но если вызывать через клиент(браузер) скрипт просто напосто валится. Если вызов идёт консольно (например крон), всё окей. (Если кто может кстати объясните пожалуйста в чём разница)..
Так вот по сути, возможно ли какимто образом вызвать ту же консоль но из пхп скрипта, передав туда пост данные к примеру, и вернуть в браузер ответ скрипта вызваного из под консоли?..
Прошу прощения возможно за глупые мысли, с консолью работал несколько раз всего и не представляю что куда. | |
|
|
|
|
|
|
|
для: sl1p
(16.04.2011 в 00:33)
| | >(Если кто может кстати объясните пожалуйста в чём разница).
Разные экземпляры PHP запускаются - они друг к другу вообще отношения не имеют (как и их настройки).
>Так вот по сути, возможно ли какимто образом вызвать ту же консоль но из пхп скрипта, передав
>туда пост данные к примеру, и вернуть в браузер ответ скрипта вызваного из под консоли?..
Можно, например, запускать PHP-скрипт через system(). | |
|
|
|
|
|
|
|
для: cheops
(16.04.2011 в 09:03)
| | хмхм.. а как переделать пост запрос?.. или хотябы строку какуюто в скрипт вызванный через system(); | |
|
|
|
|
|
|
|
для: sl1p
(16.04.2011 в 15:44)
| | Передать данные можно через параметры командной строки (получить их можно в массиве предопределенном $argv). | |
|
|
|
|
|
|
|
для: cheops
(16.04.2011 в 16:01)
| | подскажите, а где можно пример глянуть..?
Я понял о чём вы, но не особо понял как правильно этот пост массив всунуть в параметр..
На вроде -params=val=1&val2=2
? :[ | |
|
|
|
|
|
|
|
для: sl1p
(16.04.2011 в 21:54)
| | Вы хотите в одном параметре все передать? Лучше бы несколько
| |
|
|
|
|
|
|
|
для: cheops
(16.04.2011 в 21:58)
| | ну там просто огромный пост массив.. наверное нужно сериализировать) | |
|
|
|
|
|
|
|
для: cheops
(16.04.2011 в 21:58)
| | а что может быть такое, вызываю скрипт из под консоли но всё что в нём могу сделать это либо echo либо print, остальное не работает вообще и команда system() возвращает код "2"..?
и ещё вопрос, возможно я маюсь фигнёй просто, возможно ли таким образом используя из веб-скрипта консоль, вернуть скажем сгенерированный ексель файл? | |
|
|
|
|
|
|
|
для: sl1p
(17.04.2011 в 09:03)
| | Могут быть расширения не подключены (или php.ini не настроен или вообще отсутствует) - нужно теребить службу тех.поддержки, пока консольный PHP не заработает как вам нужно.
PS Следует так же учитывать, что в консольном варианте у вас не будет никаких серверных переменных и суперглобальных массивов, а текущую директорию следует указывать в обязательном порядке или использовать абсолютные пути. | |
|
|
|
|
|
|
|
для: cheops
(17.04.2011 в 09:11)
| | хм да я так и подумал насчет теребить:)
• а какие нужны расширения?..
• зы. и как насчет вопроса возможно ли вернуть из консоли сгенереный ексель?) Если нет то тема для меня будет бессмыслена(
• зыы. PS Следует так же учитывать, что в консольном варианте у вас не будет никаких серверных переменных
А как же тогда при работе с кроном эти переменные таки приходят? В моём случае используется только $_SERVER['DOCUMENT_ROOT'] и она определена... возможно она есть везде? | |
|
|
|
|
|
|
|
для: sl1p
(17.04.2011 в 09:19)
| | >• а какие нужны расширения?..
Это сами смотрите... кому что нужно, первое что приходит в голову MySQL, сокеты, mb_string(untf-8).
>• зы. и как насчет вопроса возможно ли вернуть из консоли сгенереный ексель?) Если нет то
>тема для меня будет бессмыслена(
Вернуть куда? Консольный скрипт может сохранять файлы, это подходит?
>А как же тогда при работе с кроном эти переменные таки приходят?
Может только часть переменных в $_SERVER, но лучше на это не расчитывать, на другом хосте может не быть и их. | |
|
|
|
|
|
|
|
для: cheops
(17.04.2011 в 09:41)
| | Это сами смотрите... кому что нужно, первое что приходит в голову MySQL, сокеты, mb_string(untf-8).
хм, чтото совсем запутался, а какой же пхп тогда используется если там ничего не подключено?..
Имелось ввиду что не работают функции вообще, по типу intval, strlen их же подключать не нужно вроде:)
Вернуть куда? Консольный скрипт может сохранять файлы, это подходит?
Вообще подходит но было отлично если бы результат работы через консоль вернулся бы в веб-скрипт который эту консоль запустил. Там же чтото возвращать то можно:) | |
|
|
|
|
|
|
|
для: sl1p
(17.04.2011 в 10:12)
| | зы всё поехало указав команду так:
system('php /test.php');
В данном случае используется же пхп тот же что и при запросе веб-скрипта, правильно? | |
|
|
|
|
|
|
|
для: sl1p
(17.04.2011 в 10:34)
| | >В данном случае используется же пхп тот же что и при запросе веб-скрипта, правильно?
Не факт, вернее 100% используется другой исполняемый модуль, но возможно, они используют единый конфигурационный файл php.ini. | |
|
|
|
|
|
|
|
для: cheops
(17.04.2011 в 10:44)
| | хм а почему так?..
зы. и всё же осталась проблема как передать нормально параметр через консоль, параметр является строкой sql запрос, т.е. с пробелами кавычками и прочей мерзостью. Возможно строку нужно както закодировать? | |
|
|
|
|
|
|
|
для: sl1p
(17.04.2011 в 10:48)
| | тьху, всегда так, сначала пишу, потом думаю :(
base64_encode помогла. | |
|
|
|
|
|
|
|
для: sl1p
(17.04.2011 в 10:48)
| | >хм а почему так?..
Браузеру нужна динамическая библиотека, а в консоли нужен полноценный модуль. Да они могут быть из одной сборки, но как правило, на UNIX-серверах это не так, так как там модули используются не готовые, а компилируемые. Поэтому тот PHP, который нужен для Apache компилируют по ближе к нему, а тот, который нужен в консоли, компилируют отдельно. Хотя удаленно сложно сказать, может конкретно на этом сервере все по-другому. В любом случае проблема того, что в Apache и в консоли разные версии, и по-разному настроены встречается на каждом втором сервере в интернет.
>Возможно строку нужно както закодировать?
Для начала в кавычки возьмите. | |
|
|
|
|
|
|
|
для: cheops
(17.04.2011 в 10:52)
| | Спасибо большое за ответы! | |
|
|
|