swfmillの変換を別のサーバーで行うには(通信編)

By ookura - 09/06/19 - このエントリをはてなブックマークに追加このエントリをYahoo!ブックマークに追加このエントリをdel.icio.usに追加このエントリをFC2ブックマークに追加

ケータイFlashを動的生成する場合、swfmillがインストールできるサーバーが必要になります。
 
普段のサイトやデータはレンタルサーバーにあるけど生成は専用サーバーでしかできない、という場合や、生成処理は別のサーバーでやりたい、という場合があるかと思います。
 
当然同じサーバーで変換した方が処理は速いのですがやむをえない事情というのもあります。
 
そんな場合にHTTP通信で変換処理を行う方法が使えます。
 
 

HTTP通信でデータを送受信するには

PHPでHTTP通信をする場合、fsockopenという関数を使う方法があります。
ですがデータの組み立てや読み取りのスクリプトが面倒になりますのでフレームワークを使うことにします。
ここではZendFrameworkのZend_Http_Clientを使う方法を紹介します。
 
※あらかじめZend_Frameworkをインクルードパスに配置しておいてください。
※ZendFrameworkを使用する場合はPHP5以上が必要です。
※他にもcurlを使う方法があるらしいです。
 
リクエスト側は以下のような記述になります。
request.php

<?php
$input = 'hoge';
require_once 'Zend/Http/Client.php';
$client = new Zend_Http_Client();
$client->setUri('http://hogehoge.com/response.php');
$client->setConfig(
    array(
        'maxredirects' => 0,
        'useragent'    => 'PHP/' . phpversion(),
        'timeout'      => 120,
    )
);
$client->setRawData($input, 'text/plain');

$response = $client->request('POST');

$statusCode = $response->getStatus();
if ($statusCode !== 200) {
    throw new Exception('Failed');
}
$output = $response->getBody();

echo $output;
?>

 
レスポンス側は以下のような記述になります。
response.php

<?php
$input = file_get_contents("php://input");
$output = $input . $input;
echo $output;
?>

「php://input」でPOSTデータを受け取れます。
ここではテキストデータを送受信しているだけですがバイナリデータでも構いません。
 
request.phpを実行すると「hogehoge」と出力されます。
 
 
次回はswfmillの変換処理を組み込んでみます。
 

参考URL

 
51. スクリプト上で楽にデータをPOST送信しよう:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20070827/280390/
 
floatingdays- サーバサイドでHTTP POSTする PHPライブラリいろいろ
http://fdays.blogspot.com/2009/05/http-post-php.html
 
Zend Framework- Documentation::Zend_Http
http://framework.zend.com/manual/ja/zend.http.html
 
 

関連ページ

ケータイFlash関連の記事一覧