Как упомянуто в моем комментарии, $_SESSION['userid']
не установлено для запроса Node.JS
, поэтому вы получаете эту ошибку, потому что ваша конечная точка в этом случае не производит никакого вывода.Причина этого в том, что ваш cookie-файл идентификатора сеанса установлен в вашем браузере и поэтому не будет отправлен в запросе Node.JS
.Node.JS
в этом случае не может получить сеанс самостоятельно, потому что у него нет этого идентификатора.
Есть несколько различных сценариев, которые приходят на ум.Я не совсем уверен, какой (если таковой имеется) подойдет для вашего случая, и я не очень знаком с узлом, поэтому это будут более или менее широкие обзоры:
Сценарий 1) узел и PHP находятся в одном домене и доступны через браузер.(либо через AJAX, либо через обычные страницы.)
Если вы обращаетесь к своему экземпляру Node.JS
через браузер, и он находится в том же источнике, что и ваши PHP-скрипты, вы можете взять куки-файл идентификатора сессии, скорее всего, ваш браузеруже проходит, а затем включите его в ваш HTTP-запрос nodejs.(К сожалению, я не знаю достаточно об узле, чтобы многое рассказать о том, как это сделать. Я предполагаю, что пакет cookie npm будет полезен.) Получив идентификатор сеанса из файла cookie браузера, вы можете включить его в свой узел.запросы и PHP должны отвечать так, как вы ожидаете.
Сценарий 2) узел доступен браузером (AJAX или полные страницы), но находится в другом домене
В этом сценарии вы должны либо передавать соответствующие данные при каждом запросе, либо ИЛИ пытаться получить идентификатор сеанса, установленный в браузере, который затем можно будет использовать в запросе http вашего узла.Я думаю, что первый легче сам.Однако синхронизация идентификатора сеанса между ними не должна быть невозможной.Вы в основном отправляете идентификатор сеанса на узел (возможно, через строку запроса или с помощью специального запроса POST на странице), и узел устанавливает аналогичный файл cookie для своего домена, который затем можно передавать в HTTP-запросах.Примечание. Необходимо убедиться, что они остались синхронизированными.
Сценарий 3) узел - это бэкэнд-служба, к которой браузер напрямую не обращается
В этом случаебыло бы намного проще просто сделать так, чтобы PHP делал запросы к узлу с необходимой информацией о сеансе, и в основном использовал узел в качестве службы API RESTful.
Сценарий 4) узел - это бэкэнд-сервис, к которому браузер напрямую не обращается, но процессы узла работают долго, поэтому вы не можете ожидать ответа от узла
* 1033.* Если процессы, выполняемые узлом, являются долгосрочными (то есть вы не можете ждать полного ответа в PHP), вы можете использовать узел так же, как в сценарии 3, и использовать этот теоретический API для постановки задания и возвратаидентификатор работы.Запишите информацию о сеансе в свою очередь для задания и обработайте очередь в фоновом режиме.Используйте идентификатор задания, чтобы отследить его.