Bangkejia (www.Bkjia.com) チュートリアル 最近、Yahoo の友人から、以前は bash csh を使ってスクリプトを書いていたが、今は PHP を使ってバックグラウンド プログラムを書いていると聞きました。システムカーネルを呼び出すにはshell_execを使用するのが非常に便利です。
バックグラウンドプログラムの作成について彼といくつかの原則を交換しました。それは次のように要約されます。
以下は引用内容です: function connnect() { global $db; if (is_resource($db)) { mysqli_close($db) } $db = mysqli_connect("122.225. 96.142 ", 'ワイフイ', 'freebsd@fzm', 'ワイフイ'); } |
まず第一に、Web スクリプトを書く際のこれまでの思考習慣をいくつか取り除く必要があります。 Web スクリプトが 1 回実行されると、メモリはすぐに解放されます。デーモン プログラムは異なります。1 年または数年間実行されます。
1. 良い習慣として、while (1) {} のような無限ループでコードを実行する必要があります。このように、コードが失敗しない限り、スクリプトは停止しません。
2. Echoは使用できませんが、代わりにlogが使用されます。エコーの代わりにログを使用します。 echoは画面に文字を出力するため、出力オブジェクトが存在しない場合は致命的なエラーが報告されます。
3. MYSQLの場合は毎回MYSQLに再接続する必要があります。
上記は接続例です。このコードはかつて専門家によって厳しく批判されました。これは主に次のことを防ぐためです:
MySQL は再起動されましたが、$db 変数は確かにまだリソースですが、このリソースはもう有効ではありません。コードを再度実行すると、次のことが起こります:
Mysqlではこのようなエラーが消えます。これは、エラー報告がオフになっている場合でも、画面に出力されます。これが全体につながります
スクリプト実行エラーはechoで生成されるエラーと同じです。
毎回データベースに接続するのは少し無駄ではありますが、1人を逃すよりは誤って1,000人を殺すことを選択するしかありません。この間違いはほとんどの友達が犯します
エラー、多くの人がこれは mysql のバグだと言いました、なぜなら最初はファイルを書き込むのは問題なかったのに、mysql に接続するときにエラーが発生したからです。
実際、これはmysqlのバグではありません。
4. 新しく生成された変数が自動的に解放されない場合は、直ちに解放する必要があります。そうしないと、時間の経過とともにプログラムがクラッシュします。多くの PHP プログラマーはこれを持っていません
メモリ管理の概念は、メモリは無制限であり、気軽に使用できるということです。バックグラウンドプログラムを書くときは、メモリ管理に注意を払う必要があります。
5. ファイルにアクセスしたい場合は、まずclearstatcacheする必要があります。そうしないと、統計が不正確になる可能性が高くなります。あるいは
ファイルが存在するかどうかを正確に判断できなくなりました。さらに悪いことに、ファイルを頻繁に開くと、ファイルのハンドル値が
整数の最大値を超えるまで増加し続けると、プログラムはファイルを開くことができなくなります。多くの人の手続きは3か月に1回中断されます
エラーやメモリの問題はありません。各ファイル操作の前に statcache がクリアされていない可能性があります。
転載元: http://www.cnblogs.com/niniwzw/