PHP принудительно закрывает (убивает) соединение


Я провел несколько тестов с сокетами (используя fsockopen() и stream_socket_client()) и свернулся, чтобы принудительно закрыть соединение (TCP/HTTP). Однако, не повезло.

Независимо от того, использую ли я тайм-аут в 1 мс (для параметра CURLOPT_TIMEOUT_MS в любом случае требуется минимум 1 с) или прекращаю соединение сразу после его открытия с отключенной блокировкой, оно все равно работает безупречно.

Я не пробовал разветвлять (pcntl_fork()) свой скрипт, но мой сервер все равно его не поддерживает.

Есть ли какой-нибудь другой способ убить подключение на PHP? Это очень разочаровывает, что вы не можете на PHP, в то время как можете на C#:(


Редактировать: Позвольте мне уточнить мой вопрос, поскольку он может быть несколько запутанным:

Я хочу посмотреть, позволяет ли PHP разработчикам отправлять SYN. Это все. Один, единственный, пакет SYN с использованием собственных функций PHP.

Author: Tim S., 2012-01-26

2 answers

Похоже, это связано с другим вопросом переполнения стека об отправке необработанных данных низкого уровня через PHP: Хотите вручную отправлять пакеты SYN ACK для установления TCP-соединения (если возможно, на PHP)

Библиотека, упомянутая в ответе, была prnl, которая выполняет свою работу, но я еще не играл с ней слишком сильно. Из описания:

PRNL - это библиотека PHP, предназначенная для выполнения сетевых задач низкого уровня. В этом первом выпуске мы начали с возможность передачи и приема необработанных IP-пакетов. С помощью PRNL вы можете создавать и передавать пользовательские IP-пакеты с соответствующими пакетами TCP и UDP.

Если вы используете PHP через Apache, то вы обнаружите, что Apache уже установил соединение до того, как ваш PHP сможет запуститься. На данный момент я не уверен, есть ли у вас возможность вмешаться в рукопожатие в этот момент.

Если это не то, что вы ищете, пожалуйста, обновите вопрос и Я посмотрю, что смогу найти, чтобы дать вам то, что вы ищете.

 2
Author: Liam, 2017-05-23 12:32:47

Вы пытались просто socket_close?

Или exit() сценарий, если он должен мгновенно закрыть соединение.

 0
Author: 23kulpamens, 2012-01-26 14:56:38