プログラミングの注意事項
オペレーティングシステム
webmanはLinuxおよびWindowsシステムで実行可能です。しかし、workermanはWindowsでマルチプロセス設定やデーモンプロセスをサポートしていないため、Windowsシステムは開発環境での開発およびデバッグにのみ推奨され、正式な環境ではLinuxシステムを使用してください。
起動方法
Linuxシステム
php start.php start
このコマンドはデバッグモード用で、通常は開発時に使用します。ファイル更新時にmonitorプロセスが自動的にreloadを検出し、データを表示した際にはターミナルに表示されます。ターミナルを閉じるとwebmanも自動的に閉じます。
php start.php start -d
このコマンドはデーモンプロセスモード用で、正式な環境で使用します。ターミナルを閉じてもwebmanは引き続き実行され、データの表示はターミナルには表示されません。
コードを更新するには、php start.php reload
または php start.php restart -d
を実行する必要があります。
Windowsシステム
windows.bat
を実行するか、php windows.php
コマンドを使用して起動し、Ctrl + Cで停止します。
Windowsシステムはstop、reload、status、reload connectionsなどのコマンドをサポートしていません。
Windowsではデーモンプロセスモードもサポートしていません。
常駐メモリ
webmanは常駐メモリのフレームワークです。一般的に、PHPファイルが読み込まれるとopcodeの形式で常駐メモリに保持され、再びディスクから読み込まれることはありません(テンプレートファイルを除く)。
したがって、正式な環境ではビジネスコードや設定の変更後にphp start.php reload
を実行しないと変更が反映されません。
プロセス関連の設定を変更したり、新しいcomposerパッケージをインストールした場合は、php start.php restart
を再起動する必要があります。
開発の便利さを考慮して、webmanにはビジネスファイルの更新を監視するためのカスタムプロセスmonitorが自帶されています。ビジネスファイルが更新されると、自動的にreloadが実行されます。
この機能は、workermanがデバッグモードで実行されている場合(起動時に-d
をつけない)にのみ有効です。Windowsユーザーは、windows.bat
またはphp windows.php
を実行して有効にする必要があります。
出力ステートメントについて
従来のphp-fpmプロジェクトでは、echo
やvar_dump
などの関数を使用してデータを出力すると、直接ページに表示されますが、webmanの開発プロセス(デバッグモード起動時)では、これらの出力はターミナルに表示され、ページ上には表示されません(テンプレートファイル内の出力を除く)。
exit
やdie
ステートメントを実行しない
die
やexit
を実行すると、プロセスが終了し再起動するため、現在のリクエストが正しく応答されません。
pcntl_fork
関数を実行しない
pcntl_fork
はユーザーがプロセスを作成しますが、webmanでは許可されていません。
composerでのコンポーネントインストール
composer require xxx/xxx
でインストールしたコンポーネントは、再起動するまで有効になりません。