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

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

процесса?

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

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

40 ответов

21 просмотр

🤦‍♂️

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- Автор вопроса

Спасибо

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта