Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在表单提交时每次使用一个对象?_Php_Sockets_Object_Yii_Scope - Fatal编程技术网

Php 如何在表单提交时每次使用一个对象?

Php 如何在表单提交时每次使用一个对象?,php,sockets,object,yii,scope,Php,Sockets,Object,Yii,Scope,我正在使用PHP和Yii中的套接字。我有一个包含以下字段的表单: ip port message 调用包含以下套接字编程代码的操作,并在提交表单时成功发送数据包 $socket = socket_create( AF_INET, SOCK_STREAM, getprotobyname('tcp') ); socket_connect( $socket, $address, $port ); $status = socket_sendto( $socket, $message, $l

我正在使用PHP和Yii中的套接字。我有一个包含以下字段的表单:

ip
port
message
调用包含以下套接字编程代码的操作,并在提交表单时成功发送数据包

$socket = socket_create( AF_INET, SOCK_STREAM, getprotobyname('tcp') );
socket_connect( $socket, $address, $port );      
$status = socket_sendto( $socket, $message, $len, 0, $address, $port );

if( $status !== FALSE ) {                        
   $next = '';                        
   while( $next = socket_read( $socket, 1000 ) ) {                     
       $response .= $next;
       if( strpos( $response, "\n" ) !== false )
           break;
   }                 
} else {
   $response = "Failed";
}

socket_close( $socket );

问题是,每当我提交一个包含不同数据包/消息的表单时,就会创建一个新的连接/套接字,然后发送数据包/消息。我只想创建一次套接字,然后使用同一套接字使用表单发送消息/数据包。有可能吗?

这不可能直接实现——至少考虑到我对这个问题的理解——因为每次提交表单时,一个单独的PHP进程都会接受表单并发送消息。因为它是一个单独的进程,所以它需要自己的套接字

您可以将PHP代码分解为以下几个部分:

  • 前端,它将接受表单提交和
  • 后端,它将发送套接字消息

  • 通过这种安排,您可以在每次提交表单时重新生成前端的同时保持后端运行(并保持其唯一的连接打开)。当然,这意味着您还需要安排前端与后端通信(后端甚至不需要用PHP编写)。

    这不可能直接实现——至少考虑到我对这个问题的理解——因为每次提交表单时,一个单独的PHP进程都会接受表单并发送消息。因为它是一个单独的进程,所以它需要自己的套接字

    您可以将PHP代码分解为以下几个部分:

  • 前端,它将接受表单提交和
  • 后端,它将发送套接字消息
  • 通过这种安排,您可以在每次提交表单时重新生成前端的同时保持后端运行(并保持其唯一的连接打开)。当然,这意味着您还需要安排前端与后端通信(后端甚至不需要用PHP编写)