Форум программистов, компьютерный форум, киберфорум
PHP: сети
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
2 / 2 / 0
Регистрация: 04.04.2013
Сообщений: 27
1

Запуск одного скрипта из другого

07.07.2015, 11:57. Показов 2866. Ответов 30
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Понимаю, что из названия темы мало, что понятно. Постараюсь объяснить на примере. Ситуация такая, пишется обработчик запроса с какого-то внешнего устройства (магазинная касса). Обработчик - скрипт на чистом PHP, без использования фрейморков. Он выполняет минимально необходимые действия по обработке запроса. И после этого должен вызвать другой скрипт, который лежит на этом же сервере, просто в другой директории. Этот второй скрипт работает под управлением фреймворка. Смысл в этом такой, что при ошибках в фреймворке API для касс продолжит работать, просто с чуть подрезанным функционалом. Не нужно меня спрашивать, зачем так делается и почему. Условимся, что это требование заказчика.

Так вот, я хотел поинтересоваться, как лучше всего организовать вызов этого второго скрипта? Пока мы остановились на варианте с cURL. Но что-то у меня на душе неспокойно.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.07.2015, 11:57
Ответы с готовыми решениями:

Запуск из одного PHP скрипта другого, не дожидаясь его завершения
Добрый день. Имеется php скрипт registratot.php и calculate.php. Как мне вызывать выполнение...

Запуск одного скрипта из другого
Какими кодами активируются скрипты в VBS? Есть скрипты, нужно чтобы эти файлы запускались другим...

Запуск одного скрипта из другого
Всем привет! Возникла интересная проблема. Мой скрипт содержит цикл, в котором должен вызываться...

Запуск одного скрипта perl из другого
Всем привет, почему то перестала работать конструкция вида: my $name = "test"; our $iparam =...

30
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
Цитата Сообщение от Stranger_ Посмотреть сообщение
Но что-то у меня на душе неспокойно.
пейте успокоительное.достаточно include, require и иже с ними.
0
2 / 2 / 0
Регистрация: 04.04.2013
Сообщений: 27
08.07.2015, 06:20  [ТС] 4
Цитата Сообщение от ads Посмотреть сообщение
пейте успокоительное.достаточно include, require и иже с ними.
Спасибо, успокоительное я пью, но по другой причине. Include и require не достаточно. Мне нельзя обрушить первоначальный скрипт при ошибках в вызываемом.

Цитата Сообщение от cheshirskydimk Посмотреть сообщение
Ну, как вариант, вызов с помощью system()
То есть, ты имеешь ввиду запустить 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
Цитата Сообщение от cheshirskydimk Посмотреть сообщение
Ну а зачем тут курл, если можно изнутри сервака обратиться?
Как например?
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
Цитата Сообщение от cheshirskydimk Посмотреть сообщение
Ну и вообще, что смущает и в том и в том варианте?
В варианте с 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
Цитата Сообщение от cheshirskydimk Посмотреть сообщение
Ну а если вместо заголовков вернуть структурированный к-либо образом ответ "http status, данные"?
Допустим. А в этом случае не будет запущено две копии интерпретатора 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
Цитата Сообщение от cheshirskydimk Посмотреть сообщение
О каких копиях идет речь?
Не, я имею ввиду, что это будет не запрос к серверу, а обращение к исполняемому файлу. Честно говоря, я не уверен, как это произойдёт в unix, но windows при этом запустит ещё один экземпляр программы. И неясно ещё, закроет ли он её после выполнения скрипта.
0
512 / 454 / 119
Регистрация: 17.02.2012
Сообщений: 1,032
Записей в блоге: 1
08.07.2015, 11:31 13
Зачем выдумывать велосипед?
Делайте, как вам уже посоветовали, include и require и оберните все это try/catch.
1
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
Цитата Сообщение от Drygba Посмотреть сообщение
include и require и оберните все это try/catch.
Спасибо. Идея была интересная, но не прокатит. При фатальных ошибках try/catch ничего не отловит. Но появилась идея с перехватом всех фатальных ошибок. Может быть, этот вариант сработает.

Добавлено через 1 минуту
Цитата Сообщение от cheshirskydimk Посмотреть сообщение
Ну так скрипт отработает и потом процесс завершается
Честно говоря, буду сомневаться до тех пор, пока не попробую. В любом случае за идею спасибо.
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
Цитата Сообщение от cheshirskydimk Посмотреть сообщение
Они не отлавливаются
Вот тут вроде рассказано, как их можно отловить.

Цитата Сообщение от cheshirskydimk Посмотреть сообщение
почему они должны вдруг случиться?
Не должны, конечно. Но ситуация примерно такая. У заказчика есть какой-то феерически крутой и надёжный код, в котором вообще исключены ошибки (с его слов, я не проверял). А мы цепляем к нему наши скрипты, которые работают под управлением 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
Цитата Сообщение от cheshirskydimk Посмотреть сообщение
Они не отлавливаются
достаточно легко отлавливаются.

И наверно не стоит использовать недоделки вызывающие фатальные ошибки. Зачем опускаться на уровень халтурщиков?
0
14 / 14 / 13
Регистрация: 03.07.2015
Сообщений: 130
08.07.2015, 18:44 20
достаточно легко отлавливаются.
Ну хорошо, посмотрел пример, попробовал. Но это не тоже самое, что try-catch.
В трай-каче после ошибки скрипт продолжится, в этом случае - нет. Можно, конечно, велосипедить в функции, заданной register_shutdown_function, но это мы сами понимаем, что.
0
08.07.2015, 18:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.07.2015, 18:44
Помогаю со студенческими работами здесь

Запуск скрипта для анализа папки и запуска другого скрипта
Мне нужно написать скрипт, который каждую секунду (или 5 сек) сканировал определенную папку на...

Как из одного скрипта изменить переменную (int) другого скрипта?
У меня есть два скрипта (money который отвечает за общее количество денег и CarBuy который отвечает...

Unity - Обращение к публичным полям одного скрипта из другого скрипта
Привет. Скрипты пишу на CSharp. В одном gameObject (назовем его HelloObject) есть два скрипта -...

Запуск функции другого скрипта
Столкнулся с такой проблемой. Есть Script1: IEnumerator Stopi() { float...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru