gpt4 book ai didi

php - 高效发送/接收 MySQL 行?

转载 作者:行者123 更新时间:2023-11-30 00:54:48 25 4
gpt4 key购买 nike

我有一个 VB .Net 应用程序,它通过 PHP POST 方法接收/发送数据,以使用 HTTPWebRequest 更新/获取 MySQL 数据库中的行。我的主机不允许远程数据库访问,所以我认为这是我可以做到这一点的唯一方法..但是我如何有效地做到这一点?

我担心我的方法很可能效率很低。

为了发送数据,我当前正在做的是将所有要发送的数据添加到一个字符串中,例如:

&colA=valA1;valA2;valA3&colB=valB1;valB2;valB3 etc...

该字符串每 X 分钟通过 HTTPWebRequest 发送到 PHP 文件,然后 PHP 文件将行拆分为数组(行 0 = valA1、valB1),以在 for 循环中使用 SQL 查询添加/更新数据库。

然后,为了检索数据,我正在执行类似的操作 - 从数据库中获取所有行并将列添加到由“;”分隔的字符串中。我的 .Net 应用程序读取字符串并拆分它,并将行添加到数组中。数据检索仅在应用程序启动时完成一次。

有没有更有效的方法?是发送多个 POST 请求更好,还是发送包含所有行的 POST 请求更好?我应该限制一次发送的行数吗? (大约有1000行,每行大约20列)

<小时/>

编辑:

if($_POST['action'] == "queryGroup" && $_POST['group'] != ""){
$result = DB::getInstance()->query("SELECT forename, surname, dob FROM accounts WHERE group='".$_POST['group']."'");
$output = "";
foreach($result as $row){
$output .= $row['forename'].";".$row['surname'].";".$row['dob']."|";
}
echo(substr($output, 0, -1)); //Remove the last instance of '|'
}

因此,在 VB .Net 应用程序中,我会拆分“|”创建一系列个人帐户。

然后分割';'获取每个帐户的名字/姓氏/出生日期。

还有其他行更具可变性 - 例如状态检查(在线/离线)和上次事件的计时器等,并且可以从 VB .Net 应用程序添加新用户..这就是更新行的原因时不时地。

我有一个类,用于创建 WebRequest、WebResponse 和 StreamReader 对象,该对象用于:

Dim post As New POST
With post
.URL = "http://www.host.com/post.php"
.Data = "action=queryGroup&group=" & Group
.Connect() 'Sends the WebRequest

Lst(.Response) 'Gets the WebResponse and adds it to a StreamReader and sends to Lst function
End With

Private Sub Lst(ByVal response As String)
Dim accounts As String() = Nothing
accounts = response.Split(CChar("|"))

For i = 0 To accounts.Count - 1
Dim arr As String() = accounts(i).Split(CChar(";"))
arrAdd(arr(0), arr(1), arr(2)) 'arrAdd puts all the data into a ListView
Next
End Sub

然后发送数据..这是同样的事情,但方向相反。

最佳答案

如果您只允许建立端口 80(或更好的端口 443)连接,我认为这确实是正确的方法。至于问题,您可能需要检查 php.ini post_max_size,它是帖子允许上传的最大大小。至于脚本处理,查看set_time_limit,即脚本执行的最长时间。除此之外,这是关于您的脚本如何处理事件的。

如果您的主机允许 SOCKS,您还可以设置代理服务器并以这种方式直接连接到您的数据库。请参阅http://www.phpclasses.org/package/1822-PHP-TCP-connection-wrapper-using-SOCKS-5-protocol.html用于 SOCKS 5 包装。我从未使用过它,但你可能想看看。

关于php - 高效发送/接收 MySQL 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20671838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com