2012-02-05 3 views
0

私はいくつかのグラフィックを生成し、その結果としてそれを返すスクリプトを持っています。Symfony - 別のPHPスクリプトを実行して結果を得るには?

私はsymfony2を使用しています。このスクリプトを呼び出す必要があります。私はこの方法がベストではないと思いますし、私はよくのfile_get_contentsを覚えてかなり遅いです

 private function http_post($url, $data) 
      { 
       $data_url = http_build_query ($data); 
       $data_len = strlen ($data_url); 

       return array ('content'=>file_get_contents ($url, false, stream_context_create (array ('http'=>array ('method'=>'POST' 
         , 'header'=>"Connection: close\r\nContent-Length: $data_len\r\nContent-Type: application/x-www-form-urlencoded\r\n" 
         , 'content'=>$data_url 
         )))) 
        , 'headers'=>$http_response_header 
        ); 
      } 

:私のPHPスクリプトを呼び出しますか? 私の質問: "http_post"経由でこのスクリプトにPOSTを送信するのは良い方法ですか?そうでない場合は、何より良いでしょうか?

編集:私はこのスクリプトをコントローラに入れたくないので、含まれているソリューションはありません:)。

+0

を使用すると、あなたのsymfonyアプリケーションのグラフィック部分を生成したり、それが浮動個々のスクリプトですスクリプトですできますどこかで? – F21

+0

同じサーバー上の個別のスクリプト。 –

答えて

2

イメージジェネレータをコントローラとして実装する場合は、応答を通常どおり返すだけです(return new Response($generated_image);)。

これはあなたのコントローラのようになります。

namespace Acme\MyBundle\Controller; 
use Symfony\Component\HttpFoundation\Response; 

class ImageGeneratorController 
{ 
    public function generateAction($parameters) 
    { 
     //Generate an image using parameters and store it in $image 
     $image = .... 

     return new Response($image); 
    } 
} 

その後、あなたはcall your image generator from any controllerforward()

public function indexActionInAnotherController($name) 
{ 
    $response = $this->forward('AcmeMyBundle:ImageGenerator:generate', array(
     'name' => $name, 
     'color' => 'green' 
    )); 

    // further modify the response or return it directly 

    return $response; 
} 
+0

はい、私の考慮​​事項とコードの後、私はそれが最善の解決策になると思います。私は、Responseオブジェクトにimagepng()を置き換えると問題がありましたが、私はこの解決策を見つけました:http://stackoverflow.com/questions/7365622/convert-image-to-string-for-symfony2-response –

2

あなたがやっていることに何も間違いはありませんが、代替手段を探したい場合は、多くの人が速くて堅牢なカールライブラリを使用します。

+0

+1。このスクリプトがアプリケーションの一部でない場合は、 'include()'を使う以外にできることは最高です。これは面倒です。 – F21

+0

実際に私は既にカールでテストしていますが、驚いたことに私の場合は約2倍遅く動作しますが、デバッグモードかローカルホスト上のサーバが原因であるかどうかはわかりません。私は別のスクリプトでカールを使用し、それはfile_get_contentsよりもはるかに高速に動作します –

+0

ええ、私はカールで起こって見たことがありません。それはコンパイルされて以来、とても速いのが普通です。 – gview

関連する問題