gpt4 book ai didi

php - 在 PHP 中通过 HTTP POST 发送非常大的字符串

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:08:25 25 4
gpt4 key购买 nike

我的服务器上有一个邮件地址,它接收电子邮件并将它们通过管道传输到一个 php 脚本 - piper.php 然后该脚本解析电子邮件并正确地检索发件人、收件人、主题和消息部分。完成后,我希望此脚本将此信息发布到远程 CakePHP 网站以存储在 MySQL 数据库中。除了发帖部分,我已经完成了所有这些工作。

为了发帖,我使用了 this link 给出的代码使用 cURL 但我有两个问题(下面的代码仅供引用)

function curl_post_async($url, $params)
{
foreach ($params as $key => &$val) {
if (is_array($val)) $val = implode(‘,’, $val);
$post_params[] = $key.’=’.urlencode($val);
}
$post_string = implode(‘&’, $post_params);

$parts=parse_url($url);

$fp = fsockopen($parts[‘host’],
isset($parts[‘port’])?$parts[‘port’]:80,
$errno, $errstr, 30);

pete_assert(($fp!=0), "Couldn’t open a socket to ".$url." (".$errstr.")");

$out = "POST ".$parts[‘path’]." HTTP/1.1\r\n";
$out.= "Host: ".$parts[‘host’]."\r\n";
$out.= "Content-Type: application/x-www-form-urlencoded\r\n";
$out.= "Content-Length: ".strlen($post_string)."\r\n";
$out.= "Connection: Close\r\n\r\n";
if (isset($post_string)) $out.= $post_string;

fwrite($fp, $out);
fclose($fp);
}
  1. 该代码使用 URL 编码 - 我担心这可能不起作用,例如,如果我的电子邮件在文本中超过 1MB - 可以通过 URL 编码发送的数据大小是否有限制?

  2. 有更好的方法吗?我应该建立一个PERL脚本直接连接到远程MySQL数据库并编写吗?欢迎提出建议

最佳答案

这不是 CURL。

  1. RFC 2616没有指定对帖子长度的任何要求。

服务器有自己的帖子限制(例如 Apache:http://httpd.apache.org/docs/2.2/mod/core.html#LimitRequestBody)。你的 php 实例可以有其他选项 http://php.net/manual/en/ini.core.php#ini.post-max-size .

  1. 您可以编写 php(或 perl,或 python,或 bash -- 没关系)脚本来直接连接到 mysql。但是您必须从外部打开与数据库的连接。请记住,mysql 也有限制:http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_max_allowed_packet .

决定做什么由您决定。这两种方式似乎都是合法的。

关于php - 在 PHP 中通过 HTTP POST 发送非常大的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27204417/

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