Задать вопрос
@romaaa32

Как передать данные скрипту сокетом?

Добрый вечер!
Не могу понять как работают сокеты((
Мне нужно передать данные с одного скрипта в другой сокетом на одном сервере, простой примерчик бы)
И что лучше использовать в этом случае, websoket или unix soket?
  • Вопрос задан
  • 106 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@romaaa32 Автор вопроса
Нашел такой скриптик https://ru.stackoverflow.com/questions/488482/%D0%...
Если есть скрипт a.php, в котором нужно вызвать скрипт b.php и не дожидаясь его окончания продолжить работу, то можно использовать сокеты:

Пример, вызываем скрипт b.php и передаем в него переменную foo со значением bar (можно передать и массив и что угодно или ничего не передавать). В b.php берем присланное значение и записываем в файл.

Банально в b.php будет для простоты написано:

file_put_contents('test.txt', $_POST['foo']);

В файле a.php:

function exec_script($url, $params = array()) {
    $parts = parse_url($url);

    if (!$fp = fsockopen($parts['host'], isset($parts['port']) ? $parts['port'] : 80)) {
        return false;
    }

    $data = http_build_query($params, '', '&');

    fwrite($fp, "POST " . (!empty($parts['path']) ? $parts['path'] : '/') . " HTTP/1.1\r\n");
    fwrite($fp, "Host: " . $parts['host'] . "\r\n");
    fwrite($fp, "Content-Type: application/x-www-form-urlencoded\r\n");
    fwrite($fp, "Content-Length: " . strlen($data) . "\r\n");
    fwrite($fp, "Connection: Close\r\n\r\n");
    fwrite($fp, $data);
    fclose($fp);

    return true;
}

exec_script('http://YOUR_HOST/b.php', array('foo' => 'bar'));
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@galliard
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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