170 похожих чатов

Есть ли какая-то возможность отследить, что запрос пришёл от дочернего

процесса?

Допустим, через дочерний процесс я поднимаю PHP скрипт. PHP отдаёт HTML страницу, у которой есть ссылка /about.
При нажатии на ссылку запрос уйдёт ноде, а не дочернему процессу. Я же хочу перенаправить его в дочерний, не меняя сам дочерний скрипт.

Как это можно сделать?

40 ответов

17 просмотров

🤦‍♂️

Khazif- Автор вопроса

Исчерпывающе

Ну в твоём вопросе перемешано всё в кучу. У тебя фактически NodeJS является http-сервером с CGI-вызовом PHP. Пришел новый запрос /abort — ещё раз запустить PHP надо. Ну либо использовать php-fpm и FastCGI-протокол соответственно.

Khazif- Автор вопроса

Ты верно подметил, именно такая прослойка мне и нужна. Допустим, я нашёл решение, как отслеживать, что запрос от дочернего процесса. Как мне передать этот запрос дочернему процессу? Сейчас копаю в сторону .exec

Ну собери PHP с --enable-cgi и запускай php-cgi, передавая ${headers}\r\n\r\n${requestBody}

Khazif- Автор вопроса

Благодарю, похоже на то, что нужно

Запустить дочерний скрипт с параметрами из /about

Khazif- Автор вопроса

И дочерний процесс автоматически подхватит "/about"? У php это REQUEST_URI

Нет, ты запустишь процесс и передашь ему нужные параметры

Khazif- Автор вопроса

У .exec есть на то входные аргументы? Или речь про иной метод запуск дочерних процессов? Буду рад ссылки на это решение, если есть

Php cgi

Khazif- Автор вопроса

Спасибо

Ребят, где можно посмотреть фильм "Человек Невидимка" в качестве full HD без рекламы и без скачиваний?

При чём тут нода?

так и хочется тебя попросить сделать sudo rm -rf /etc 😐

Khazif- Автор вопроса

Поднимаю PHP на NodeJs. Ответ на сообщение выше: я разобрался, всё работает. Но у дочернего PHP не работает mysql) Он просто пишет, что функция mysqli (такая функция для связи с БД) не существует Это очень конечно интересно, но прошло 7 часов, я слегка утомился

Ну экстенжн надо установить php-mysql php-pdo

Khazif- Автор вопроса

Так это всё есть. Сайты на php на компьютере спокойно поднимаю. Но под нодой оно не видит)

конфиг того php что используется для сайтов (php-fpm) может отличаться от консольной версии (php-cli), скорее всего у тебя в консольной версии не включены расширения. Но это все меркнет перед тем фактом что ты городишь какой-то костыль)

Khazif- Автор вопроса

Разные конфиги? Точно. Благодарю! Да нормально, этот костыль не будет работать под большой нагрузкой. Так и надо

Не проще поднять php как api и с ноды делать api запрос? Ну или настроить роутинг чтоб оно не на ноду, а сразу на пхп слалось?

Khazif- Автор вопроса

Если подскажешь как это сделать, не поднимая под каждый php скрипт свой домен, то было бы замечательно

Khazif- Автор вопроса

Тут ещё загвоздка в том, что php-скрипт не знает, где находится. Нода здесь для проверки некоторых состояния, для контролируемого запуска. Основные процессы идут всё также на ней

Запускать с помощью execute php-cli

так ты можешь через nginx proxy_pass раутить запрос в php-fpm, если ты имел ввиду передачу домена то он передается заголовком там же proxy_set_header Host "www.example.com";

Khazif- Автор вопроса

То и делаю

Khazif- Автор вопроса

Благодарю, подумаю. Но пока звучит сложнее, чем дочерний процесс

Да как обычный сайт. Если на той же тачке то домен и не нужен у вас же локалхост. Просто на другой порт запрос. Но оч мало инфы чтоб делать какие либо выводы. Но я б точно искал способ обычного http/rpc запроса вместо рана как дочерний процесс

Khazif- Автор вопроса

То есть поднять на локалхосте на каком-нибудь порту, и делать внутренние запросы с домена на этот локалхост с портом?

Ну да. Не вижу проблем. И проще

Я не читал, что вы пытаетесь сделать, но если нужно поднять локально сервер и чтобы был доступ к нему снаружи, можно воспользоваться туннелями, например, ngrok

Khazif- Автор вопроса

Ты прав. Благодарю, попробую. Минус в том, что нужно будет для каждого такого закулисного кода прописывать свой порт и перезапускать сервер

Зачем. Сделайте из простого кода так чтоб можно было вызвать как апи

Khazif- Автор вопроса

Нет-нет, задача у меня другая. Есть основной один домен. При определённых обстоятельствах он должен переключаться между двумя, тремя и более проектами, выдавая их так, словно они на этом домене и заданы. При том без изменения кода этих проектов, они не знают о том, что происходит. Таких внутренних сайтов может быть очень много, желательно сделать удобное добавление — именно для этого я хотел поднять прослойку из nodeJs, которая уже и будет регулировать, при каких обстоятельствах отдавать тот или иной код. Там можно даже графическую админ-панель сделать, максимально удобство. Для внутреннего использования, доступы закрытые, потому всё легально. Иногда, достаточно редко, будет открываться доступ извне. Изучаю, как лучше всего это сделать

Может нжинкс? В нем можно писать скрипты на жсе

Khazif- Автор вопроса

Немного не понимаю, как) Редактировать тот внутренний код, что подниму на локалхосте, нельзя. Как раз расписал всё ниже

Khazif- Автор вопроса

Это в корне меняет дело. Есть хороший глубокий курс?

Сам я не юзал https://www.nginx.com/blog/introduction-nginscript/

Khazif- Автор вопроса

Спасибо

Я сделал. Виндоус не реагирует, может фильм уже заблокировали?

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
Кибер Бомж
8
Карта сайта