0

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

当我提交此表格时,它需要太多时间。很长一段时间后它仍在处理中。它适用于小型 base64 字符串并且图像已成功发布,但不适用于大型图像 base64 字符串。

我在服务器端使用以下代码来获取这个 base64 图像:

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

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

4

1 回答 1

1

在没有 $_REQUEST 的情况下尝试它,首先是我的完整脚本,这里的代码对我来说很好,如果它不适合你,然后提供关于 PHP/webserver/machine (os, cpu ..) 的完整信息:但我认为这是关于将字符从你的文本区域传递给代码的事情,我没有很好地理解你是如何做到的,但是下面的测试脚本给了我们答案:)

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

更多之前发表在评论中。

于 2013-09-11T09:26:58.797 回答