これは数年前のものであり、これはクラス/関数の意図された使用法ではないかもしれませんが、コマンドラインから呼び出される分離されたファイルで次のことが非常に役立つことがわかりました.
これによって解決される問題は、Apache プロセスの生成がなくなることです。URLから必要なコントローラー/アクションにアクセスできるため、ソリューションは素晴らしいです。
ほとんどすべての ZF1 ベースのアプリでは、インデックス ファイルをコピーしてすべてを同じに保ち、次の行をコメント アウトするだけです。
$application->run();
この行の下には、オートローダーなどでアクセスできるものがあります。粗雑ですが、機能します。残念ながら、すぐにアプリケーションが持つ多くのファイルへのアクセスが制限され、必要なファイルにアクセスできる唯一の方法はコントローラー/アクションを使用することであることに気付くでしょう。
代わりに、 $application->bootstrap() の下の新しいファイルで次を使用します (まだ $application->run() を削除しています):
$front = Zend_Controller_Front::getInstance();
// You can put more here if you use non-default modules
$front->setControllerDirectory(array(
'default' => APPLICATION_PATH.'/controllers'
));
$viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer();
$viewRenderer->setNeverRender(true);
Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
$req = new Zend_Controller_Request_Http("http://anydomain.tld/controller/action");
// Example just to see how this can be extended
$req->setParam("someVar", "someValue");
$front->setRequest($req);
$front->dispatch();
最終的に、Web 用のメインの index.php と同じようにすべてをブートストラップする分離された PHP ファイルができますが、必要に応じてコントローラー/アクションを手動でトリガーできるため、ZF1 が意図した方法で残りのファイルに簡単にアクセスできます。あなたはそれらにアクセスします。