ラベル php の投稿を表示しています。 すべての投稿を表示
ラベル php の投稿を表示しています。 すべての投稿を表示

2011年4月12日火曜日

openPNEでスマートフォン表示その2

openPNEでスマートフォン表示する際に、UserAgentの判定をcontroller.php内のexecute()で行ってたら、問題が発生。

do系の処理時に、直接forwordを呼ばれる場合があるようでその時にモジュール名にktaiを渡すと弾かれてしまう。
すでに他のページが見れる状態ならおそらく何も処理をせずにh_homeが表示される。

リダイレクトを使っているところはモジュールを再判定するので問題ない

2011年4月6日水曜日

PHPでマルチスレッド (非同期)

なんかかっこいいタイトル付けてますが、コマンド実行して出力を/dev/nullに捨てるだけ

system('スクリプト等' > /dev/null &, );

こんな感じのリダイレクトすれば処理を待ちません。
exec()でも同様です。

別サーバーへスクリプト流すのにレスポンスを待たせたくなかったのでやってみました。

openPNEでスマートフォン表示

スマートフォン用の表示というより、テンプレートの切り分け方に関して発見したのでメモ。

テンプレートファイルをセットしているのはcontroller.phpのopenpne_forwardメソッド。
150行目付近でdo系かpage系か判定した直後

$smarty->templates_dir = $module . '/templates';

これ↑

$module変数はこのメソッドの前にopenpne_execute内でisKtaiUserAgentにて判定。
要は携帯のエージェントじゃなきゃPCで来る。

ので、こんな感じのことやればいいのではないかと


if($module == 'pc' && (strstr($_SERVER['HTTP_USER_AGENT'], 'iPhone')|| strstr($_SERVER['HTTP_USER_AGENT'], 'Android'))){
         $smarty->templates_dir = 'ディレクトリ名/templates';
        }else{
         $smarty->templates_dir = $module . '/templates';
        }

こうすればロジックはPCでテンプレートだけ別物を使うことが可能ではないでしょうか?