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

标签 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, $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 - 如何在表单提交时每次使用一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16707523/

    相关文章:

    php - 重新排列php数组

    php - 数据库查询结果来自不同的变量,原因是什么?

    c - close() 和 exit() 调用后的 TCP 连接数

    javascript - 获取对象中对象的名称

    php - 为什么 PHPUnit 在生成覆盖率报告时要执行代码?

    下拉菜单中的 PHP 存储和显示选项

    c# - Non-Blocking IO是如何实现的?

    java - 在java中通过套接字发送大数据

    javascript - 如何在json中形成多维数组的结构

    javascript - Javascript中对象的自定义属性映射