Intereting Posts
Результаты запроса SQL в таблицу php Почему date () не правильно конвертирует YYMMDDHHMM в приемлемый формат даты в MySQL? Какова цель is_uploaded_file ()? Создать сеанс сеанса на 1 странице или на всех страницах? Проблема PHP PDO с дезинфицированными полями ORDER BY Замените preg_replace () e модификатор на preg_replace_callback Как я могу сохранить один и тот же URL-адрес в адресной строке для каждой страницы? Как улучшить чтение функции файла и захватить данные для лучшей производительности, чем файл ()? Regex, чтобы избежать двойных кавычек внутри двойных кавычек с preg_replace Добавить другой класс в четные и нечетные divs Azure копирует капли из одной учетной записи хранилища в другую в той же подписке, используя API останова PHP – подсчитать повторяющиеся значения в двухмерном массиве, а затем отобразить только уникальные значения со счетчиком извлечь первые N цифр из строки с регулярным выражением сортировать массив на основе dateTime в php PHP-файл, который должен запускаться один раз и удалять себя. Является ли это возможным?

Как передать сессию новому сокету через fsockopen?

Мне нужно передать сеанс асинхронному вызову через fsockopen в php.

Можете ли вы помочь мне передать сеанс в новый сокет?

РЕШЕНИЕ:

Следующий код работает.

start.php

<?php session_start(); $_SESSION['var1'] = 'value1'; async_call('/async.php'); echo '<pre>'; print_r($_SESSION); echo $_COOKIE['PHPSESSID'] . "\r\n"; echo '<a href="verify.php">verify.php</a>'; function async_call($filepath) { $host = 'sandbox'; // set to your domain $sock = fsockopen($host, 80); fwrite($sock, "GET $filepath HTTP/1.1\r\n"); fwrite($sock, "Host: $host\r\n"); fwrite($sock, "Cookie: PHPSESSID=" . $_COOKIE['PHPSESSID'] . "\r\n"); fwrite($sock, "Connection: close\r\n"); fwrite($sock, "\r\n"); fflush($sock); fclose($sock); } ?> 

async.php

 <?php session_start(); logger('confirm logger is working'); logger($_SESSION); // this is always blank! function logger($msg) { $filename = 'debug.log'; $fd = fopen($filename, "a"); if (is_array($msg)) $msg = json_encode($msg); $msg = '[' . date('Y/m/dh:i:s', time()) . "]\t" . $msg; fwrite($fd, $msg . "\n"); fclose($fd); } ?> 

verify.php

 <?php $logfile = 'debug.log'; echo '<a href="start.php">start.php</a>'; echo '<pre>' . file_get_contents($logfile); ?> - <?php $logfile = 'debug.log'; echo '<a href="start.php">start.php</a>'; echo '<pre>' . file_get_contents($logfile); ?> 

Я мог бы заставить это работать локально, но оказалось, что общий хост, на котором я работал, запретил fsockopen без какой-либо документации. Все хорошо на моих серверах. Спасибо за помощь.

Solutions Collecting From Web of "Как передать сессию новому сокету через fsockopen?"

Спасибо за помощь, Андреас. Оказывается, общий хост, на котором я работал, на запрещенном fsockopen без какой-либо документации. Вот почему я мог заставить его работать локально, но не на промежуточном сервере.

Следующий код работает.

start.php

 <?php session_start(); $_SESSION['var1'] = 'value1'; async_call('/async.php'); echo '<pre>'; print_r($_SESSION); echo $_COOKIE['PHPSESSID'] . "\r\n"; echo '<a href="verify.php">verify.php</a>'; function async_call($filepath) { $host = 'sandbox'; // set to your domain $sock = fsockopen($host, 80); fwrite($sock, "GET $filepath HTTP/1.1\r\n"); fwrite($sock, "Host: $host\r\n"); fwrite($sock, "Cookie: PHPSESSID=" . $_COOKIE['PHPSESSID'] . "\r\n"); fwrite($sock, "Connection: close\r\n"); fwrite($sock, "\r\n"); fflush($sock); fclose($sock); } ?> 

async.php

 <?php session_start(); logger('confirm logger is working'); logger($_SESSION); // this is always blank! function logger($msg) { $filename = 'debug.log'; $fd = fopen($filename, "a"); if (is_array($msg)) $msg = json_encode($msg); $msg = '[' . date('Y/m/dh:i:s', time()) . "]\t" . $msg; fwrite($fd, $msg . "\n"); fclose($fd); } ?> 

verify.php

 <?php $logfile = 'debug.log'; echo '<a href="start.php">start.php</a>'; echo '<pre>' . file_get_contents($logfile); ?> - <?php $logfile = 'debug.log'; echo '<a href="start.php">start.php</a>'; echo '<pre>' . file_get_contents($logfile); ?>