2 / 2 / 0
Регистрация: 04.04.2013
Сообщений: 27
|
|
1 | |
Запуск одного скрипта из другого07.07.2015, 11:57. Показов 2866. Ответов 30
Метки нет (Все метки)
Понимаю, что из названия темы мало, что понятно. Постараюсь объяснить на примере. Ситуация такая, пишется обработчик запроса с какого-то внешнего устройства (магазинная касса). Обработчик - скрипт на чистом PHP, без использования фрейморков. Он выполняет минимально необходимые действия по обработке запроса. И после этого должен вызвать другой скрипт, который лежит на этом же сервере, просто в другой директории. Этот второй скрипт работает под управлением фреймворка. Смысл в этом такой, что при ошибках в фреймворке API для касс продолжит работать, просто с чуть подрезанным функционалом. Не нужно меня спрашивать, зачем так делается и почему. Условимся, что это требование заказчика.
Так вот, я хотел поинтересоваться, как лучше всего организовать вызов этого второго скрипта? Пока мы остановились на варианте с cURL. Но что-то у меня на душе неспокойно.
0
|
07.07.2015, 11:57 | |
Ответы с готовыми решениями:
30
Запуск из одного PHP скрипта другого, не дожидаясь его завершения Запуск одного скрипта из другого Запуск одного скрипта из другого Запуск одного скрипта perl из другого |
14 / 14 / 13
Регистрация: 03.07.2015
Сообщений: 130
|
|
07.07.2015, 17:14 | 2 |
Ну, как вариант, вызов с помощью system()
1
|
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
|
|
07.07.2015, 18:46 | 3 |
0
|
2 / 2 / 0
Регистрация: 04.04.2013
Сообщений: 27
|
|
08.07.2015, 06:20 [ТС] | 4 |
Спасибо, успокоительное я пью, но по другой причине. Include и require не достаточно. Мне нельзя обрушить первоначальный скрипт при ошибках в вызываемом.
То есть, ты имеешь ввиду запустить php из командной строки и в качестве параметра передать второй скрипт? А чем он лучше cURL?
0
|
14 / 14 / 13
Регистрация: 03.07.2015
Сообщений: 130
|
|
08.07.2015, 09:15 | 5 |
Ну а зачем тут курл, если можно изнутри сервака обратиться?
0
|
2 / 2 / 0
Регистрация: 04.04.2013
Сообщений: 27
|
|
08.07.2015, 09:16 [ТС] | 6 |
0
|
14 / 14 / 13
Регистрация: 03.07.2015
Сообщений: 130
|
|
08.07.2015, 09:18 | 7 |
Я про систем()
Добавлено через 48 секунд Ну и вообще, что смущает и в том и в том варианте?
0
|
2 / 2 / 0
Регистрация: 04.04.2013
Сообщений: 27
|
|
08.07.2015, 09:25 [ТС] | 8 |
В варианте с system смущает момент, как в первоначальный скрипт вернуть http код ответа страницы? А в варианте с cURL смущает ощущение, что иду к соседнему дому через северный полюс
0
|
14 / 14 / 13
Регистрация: 03.07.2015
Сообщений: 130
|
|
08.07.2015, 09:29 | 9 |
Ну а если вместо заголовков вернуть структурированный к-либо образом ответ "http status, данные"?
0
|
2 / 2 / 0
Регистрация: 04.04.2013
Сообщений: 27
|
|
08.07.2015, 10:36 [ТС] | 10 |
Допустим. А в этом случае не будет запущено две копии интерпретатора PHP?
0
|
14 / 14 / 13
Регистрация: 03.07.2015
Сообщений: 130
|
|
08.07.2015, 10:39 | 11 |
Если я правильно помню, то каждый запрос запускается отдельным процессом. О каких копиях идет речь?
0
|
2 / 2 / 0
Регистрация: 04.04.2013
Сообщений: 27
|
|
08.07.2015, 10:55 [ТС] | 12 |
Не, я имею ввиду, что это будет не запрос к серверу, а обращение к исполняемому файлу. Честно говоря, я не уверен, как это произойдёт в unix, но windows при этом запустит ещё один экземпляр программы. И неясно ещё, закроет ли он её после выполнения скрипта.
0
|
14 / 14 / 13
Регистрация: 03.07.2015
Сообщений: 130
|
|
08.07.2015, 11:59 | 14 |
0
|
2 / 2 / 0
Регистрация: 04.04.2013
Сообщений: 27
|
|
08.07.2015, 14:42 [ТС] | 15 |
Спасибо. Идея была интересная, но не прокатит. При фатальных ошибках try/catch ничего не отловит. Но появилась идея с перехватом всех фатальных ошибок. Может быть, этот вариант сработает.
Добавлено через 1 минуту Честно говоря, буду сомневаться до тех пор, пока не попробую. В любом случае за идею спасибо.
0
|
14 / 14 / 13
Регистрация: 03.07.2015
Сообщений: 130
|
|
08.07.2015, 15:00 | 16 |
0
|
2 / 2 / 0
Регистрация: 04.04.2013
Сообщений: 27
|
|
08.07.2015, 15:12 [ТС] | 17 |
Вот тут вроде рассказано, как их можно отловить.
Не должны, конечно. Но ситуация примерно такая. У заказчика есть какой-то феерически крутой и надёжный код, в котором вообще исключены ошибки (с его слов, я не проверял). А мы цепляем к нему наши скрипты, которые работают под управлением Bitrix. И вот, заказчик боится, что если сцепить скрипты простым include, то при каких-то ошибках в наших скриптах вся его система рухнет. Поэтому и приходится запускать наши скрипты через такую ж...
0
|
14 / 14 / 13
Регистрация: 03.07.2015
Сообщений: 130
|
|
08.07.2015, 15:24 | 18 |
Короче, много заморочек по поводу стороннего продукта. Почему надо предусматривать то, что он может выдать ошибку? Ну выдал он ошибку, значит так и сообщим "то-то выдало ошибку, я не могу работать дальше"
0
|
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
|
|
08.07.2015, 17:03 | 19 |
достаточно легко отлавливаются.
И наверно не стоит использовать недоделки вызывающие фатальные ошибки. Зачем опускаться на уровень халтурщиков?
0
|
14 / 14 / 13
Регистрация: 03.07.2015
Сообщений: 130
|
|
08.07.2015, 18:44 | 20 |
В трай-каче после ошибки скрипт продолжится, в этом случае - нет. Можно, конечно, велосипедить в функции, заданной register_shutdown_function, но это мы сами понимаем, что.
0
|
08.07.2015, 18:44 | |
08.07.2015, 18:44 | |
Помогаю со студенческими работами здесь
20
Запуск скрипта для анализа папки и запуска другого скрипта Как из одного скрипта изменить переменную (int) другого скрипта? Unity - Обращение к публичным полям одного скрипта из другого скрипта Запуск функции другого скрипта Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |