2012-01-26 19 views
2

ソケット(fsockopen()stream_socket_client()を使用)と接続を強制終了するためのcURL(TCP/HTTP)でいくつかのテストを実行しました。しかし、運がない。PHP強制終了(kill)接続

1msタイムアウト(cURLでCURLOPT_TIMEOUT_MSオプションを指定すると、最小限の1秒しか必要ありません)を使用するか、ブロックを無効にした直後に接続を終了するかどうかは問題ありません。

私はスクリプトをフォークしませんでしたが(pcntl_fork())、私のサーバーはそれをサポートしていません。

PHPで接続を切断する方法はありますか?あなたはできますが、それは、C#でPHPにはできませんので、非常に残念だ:(


編集:それは多少混乱するかもしれないように私は私の質問を明確にしましょう:

私はPHPは、開発者がすることを可能にするかどうかを確認したいですSYNを送信します。それはすべてです。PHPのネイティブ関数を使用して一つの、単一、SYNパケット。

+0

'fclose()'、 'socket_close()'、 'curl_close()'が対象ではありませんか? – MetalFrog

+0

@MetalFrogいいえ、その時点でSYN、SYN-ACKとACKはすでに送信されています。これは強制的にクローズしたり強制終了したりするものではなく、通常は接続を閉じることになります。 –

答えて

2

これはPHPを通じて生、低レベルのデータを送信することについては、別のスタックオーバーフローの問題に関連したそうです:Want to manually send SYN ACK packets to establish TCP connection (in PHP if possible)

の回答で述べたライブラリが仕事をしているprnlだったが、私はまだあまりにも重くてプレイしていません。説明者:

PRNL is a PHP library aimed at the execution of low level networking tasks. In this first release we started with the possibility of transmitting and receiving raw IP packets. With PRNL you are able to create and transmit custom IP packets with matching TCP and UDP packets.

あなたは、Apache経由でPHPを使用しているなら、あなたはあなたのPHPを実行するための機会を得る前に、Apacheがすでに接続を確立していることを発見するつもりです。あなたがその時点でハンドシェイクに介入する能力を持っていれば、私はこの時点では確信していません。

これはあなたが探しているものでない場合は、質問を更新してください、あなたが探しているものを得るために私が見つけることができるものが表示されます。

+0

この場合、PHPはApacheとは関係ありません。さらに、PRNLはコマンドラインからのみ実行されるため、Webアプリケーションとは関係ありません。最後に、MacまたはWindowsでこれらのソケットを作成するのに十分なアクセス権がありません。 Linuxで運が良ければ... –

+0

アプリでこれを試しているのか、それとも概念証明としてあなたは言っていません。 PRNLに関しては、必要に応じてコードからオブジェクトを呼び出し/インスタンス化し、コマンドラインアクセス以上のことができるはずです。どのサーバー環境を実行していますか? – Liam

+0

OSX 10.6.8と私はMAMPサーバーをインストールするのが怠惰です。それは完璧な解決策だと私は間違いなくそれを使用していますが、私はこのエラーを取得し続けている: 'ソケット[1]を作成することができません:操作は許可されていません。それはMAMPかもしれない?それはばかげているでしょう。 –

0

はあなただけsocket_closeしようとした?

exit()スクリプトを即座に接続を閉じる必要があります。

+0

私は両方を試してみましたが、どちらもまだ正常に接続を閉じました。 –

関連する問題