【问题标题】:How to use one object every time on form submit?每次提交表单时如何使用一个对象?
【发布时间】:2013-05-18 10:26:15
【问题描述】:

我正在使用 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 );

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

【问题讨论】:

    标签: php sockets object yii scope


    【解决方案1】:

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

    您可以做的是将 PHP 代码分解为多个部分:

    1. 前端,它将接受表单提交和
    2. 将发送套接字消息的后端

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 2014-07-06
      • 1970-01-01
      • 1970-01-01
      • 2017-05-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多