当发布非常长的base64字符串时,表单占用太多时间

时间:2013-09-11 08:53:18

标签: php string apache post base64

我们的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配置中的任何内容吗?

1 个答案:

答案 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
?>

之前发表的评论更多。