Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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 表单在发布很长的base64字符串时花费了太多时间_Php_String_Apache_Post_Base64 - Fatal编程技术网

Php 表单在发布很长的base64字符串时花费了太多时间

Php 表单在发布很长的base64字符串时花费了太多时间,php,string,apache,post,base64,Php,String,Apache,Post,Base64,我们的PHP脚本托管在基于Linux的Apache服务器上。我有一个带有一个文本区和一个提交按钮的表单。此文本区域包含284312个字符的非常长的base64字符串 当我提交这份表格时,它花费了太多的时间。经过很长时间后,它仍在处理中。它适用于较小的base64字符串,图像已成功发布,但不适用于较大的base64字符串图像 我在服务器端使用以下代码来获取此base64映像: $ifp = fopen( "images/myimage.png", "wb" ); $status = fwrite(

我们的PHP脚本托管在基于Linux的Apache服务器上。我有一个带有一个文本区和一个提交按钮的表单。此文本区域包含284312个字符的非常长的base64字符串

当我提交这份表格时,它花费了太多的时间。经过很长时间后,它仍在处理中。它适用于较小的base64字符串,图像已成功发布,但不适用于较大的base64字符串图像

我在服务器端使用以下代码来获取此base64映像:

$ifp = fopen( "images/myimage.png", "wb" );
$status = fwrite( $ifp, base64_decode( str_replace(' ', '+', $_REQUEST['image'] ) ) );
fclose( $ifp );

有什么解决办法吗?我应该在我的PHP或Apache配置中更改任何内容吗?

在没有$\u请求的情况下尝试一下,首先是我的完整脚本,这里的代码对我来说很好,如果它对您不起作用,那么请提供有关PHP/webserver/machine(os,cpu…)的完整信息: 但我认为这是关于将字符从textarea传递到代码的问题,我不太清楚您是如何做到的,但下面的测试脚本为我们提供了答案:)



更多信息在之前的评论中发布。

首先你说它速度慢,然后说它“不工作”。是哪一个?“不工作”是什么意思?为什么要使用
str\u replace
?这不是邮件请求吗?不知道。它很慢或者不工作。。因为半小时后它还在处理。当base64字符串非常长时,最终没有结果。为什么要使用textarea提交图像?发布base64字符串是我的测试表单。。实际上,我将使用我的服务器从其他客户端获取以base64字符串形式发布的图像..刚刚在PHP 5.4.4-14、Web服务器nginx 1.2.1、图像5.6mb、base64 7489332个字符上尝试了您的脚本,工作正常,没有问题。执行时间:0.099922895431519秒。看起来你的php已经过时了?谢谢你的回复。我在服务器上使用PHP5.3.3。我把这微秒的东西放在我的代码里。但我最后无法查看这次,因为它仍在工作,没有响应。您是否尝试了整个php脚本?忘记你的.NET应用程序或者你正在使用的任何东西,只需尝试直接指向图像文件的整个脚本,如果它出现问题,那么问题就出在PHP设置/版本中。但是我几乎有默认的php设置。我在服务器上使用了您的代码,并且成功上传了相同的图像。我的回答是“以秒为单位的总执行时间:0.004465103149414”,这意味着问题在于发布base64数据??是的,你必须提供更多的代码,确切地说你是如何使用它的,所以我可以测试它并找到解决方案,看起来它在php中不是问题,也不是你想做什么,但问题在于你是如何做的。
<?php
    $time_start = microtime(true); 

    $imagedata = file_get_contents('Cat2.jpg'); //5616998 bytes
    $base64 = base64_encode($imagedata);

    //echo strlen($base64); //7489332 characters

    $ifp = fopen('myimage.png', 'wb');
    $status = fwrite($ifp, base64_decode(str_replace(' ', '+', $base64)));
    fclose($ifp);

    echo 'Total execution time in seconds: ' . (microtime(true) - $time_start); //0.098897218704224 seconds
?>