我们的PHP脚本托管在基于Linux的Apache Server上。我有一个表单,其中包含一个 textarea 和一个提交按钮。此 textarea 包含一个非常长的base64字符串 284312 字符。
当我提交此表单时,需要花费太多时间。很长一段时间后它仍在处理中。它适用于小的base64字符串,图像成功发布,但它不适用于大尺寸图像base64字符串。
我在服务器端使用以下代码来获取此base64图像:
$ifp = fopen( "images/myimage.png", "wb" );
$status = fwrite( $ifp, base64_decode( str_replace(' ', '+', $_REQUEST['image'] ) ) );
fclose( $ifp );
这有什么解决方案吗?我应该更改PHP或Apache配置中的任何内容吗?
答案 0 :(得分:1)
尝试没有$ _REQUEST,我的完整脚本首先,这里的代码对我来说很好,如果它不适合你,那么提供有关PHP / webserver / machine(os,cpu ..)的完整信息: 但我认为这是将你的textarea中的字符传递给代码,我不知道你怎么做,但下面的测试脚本给了我们答案:)
<?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
?>
之前发表的评论更多。