Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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中通过HTTP POST发送非常大的字符串_Php_Email_Http_Cakephp - Fatal编程技术网

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

在PHP中通过HTTP POST发送非常大的字符串,php,email,http,cakephp,Php,Email,Http,Cakephp,我的服务器上有一个邮件地址,它接收电子邮件并将它们传输到一个php脚本-piper.php该脚本然后解析电子邮件并正确地从、到、主题和消息部分检索。完成后,我希望此脚本将此信息发布到远程CakePHP网站,并存储在MySQL数据库中。我有所有这些工作,除了张贴部分 为了发表文章,我使用了using cURL中给出的代码,但我有两个问题(下面的代码仅供参考) 代码使用URL编码-我担心如果我的电子邮件文本超过1MB,这可能不起作用-通过URL编码发送的数据大小没有限制吗 有更好的方法吗?我是否应该

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

为了发表文章,我使用了using cURL中给出的代码,但我有两个问题(下面的代码仅供参考)

  • 代码使用URL编码-我担心如果我的电子邮件文本超过1MB,这可能不起作用-通过URL编码发送的数据大小没有限制吗

  • 有更好的方法吗?我是否应该建立一个PERL脚本来直接连接到远程MySQL数据库并进行写操作?欢迎提出建议

  • 这不是卷发

  • 未规定对立柱长度的任何要求 服务器有自己的post限制(例如Apache:)。您的php实例可以有其他选项

  • 您可以编写php(或者perl,或者python,或者bash——这无关紧要)脚本来直接连接到mysql。但您必须从外部打开与数据库的连接。记住,mysql也有限制:
  • 该怎么办由你决定。这两种方式似乎都是合法的

    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);
    }