2017-07-22 9 views
0

私はHTMLコンテンツを生成し、それをキャンバスに変換してPHPでサーバーに保存するプロジェクトに取り組んでいます。この処理には15秒以上かかることがあります訪問者が待機する時間は です。base64ファイルからのイメージ作成を高速化する方法はありますか?そして、サーバーの設定はどうすれば、私のサーバーでこのアップロードを迅速に行うためにアップグレードできますか?ありがとう。PHPがbase64から高速に画像を作成

イメージを生成するファンクションコードです。サーバーにイメージを送信するAJAX要求に対して、キャンバスが作成されるのを待つ必要があるのは約17秒です。

function base64ToImage($base64_string, $output_file) 
{ 
     $file = fopen($output_file, "wb"); 

     $data = explode(',', $base64_string); 

     fwrite($file, base64_decode($data[1])); 
     fclose($file); 

    return $output_file; 
} 
+0

私たちは、あなたがやっていることとスピードアップする方法を見ることができるように、コードを示してください。私たちは完全な質問をすることはできません。 –

+0

@PatrickSimardコードを追加しました。ありがとうございます。 –

答えて

0

操作がすぐに実行できない場合は、後でcronジョブを使用してサーバーの負荷が軽くなったときに処理を延期することができます。平均時間では、あなたはそれが、これは速くない場合、問題は、画像を保存するが、それを取得していないimgタグに

<img src="data:image/png;base64, HwAAAABJRU5ErkJggg==" alt="Red dot" /> 

をDBに文字列(非常に高速である必要があります)だけ出力を保存することができますソースから。

+0

これはいいアイデアですが、私はそれを適用できません。なぜなら、サーバーのイメージのパスを含むユーザーのFacebookブック共有URLと、アップロード後に同じAjaxリクエストで取得されたIDを生成する必要があるからです完了。 –

+0

あなたのストリームが別のPHPページのbase64にあり、それをあなたのイメージのソースとして使用している場合でも、これを行うことができます。イメージストリームはbase64コードから、またはイメージが変換されたかどうかによってイメージから直接得られます。両方のURLが同じです。 /imgstream.php?imgToken=1d485e4w –

+0

のようなものですが、共有はajaxリクエストから取得されたIDを含むリンクで行われます。これに加えて、ユーザーが共有ボタンをクリックすると、アップロードされたものを見る必要がありますimage、この場合、画像がまだアップロードされておらず、ただのリンクであるため空白になります。したがって、共有する画像が表示されない限り、大半の人は結果を共有しません... –

関連する問題