Harvey Hardware Network が先週新しいニュース リリース プラットフォームに切り替えた後、一時的なニーズにより、元のニュース プラットフォームが完全に停止されなかったため、新しいプラットフォームの使用を開始した後、Web サイトのホームページで問題が発生しました。常に元のシステム コンテンツに更新されるため、最終的には特定のニュース リンクに正常にアクセスできなくなります。新システムではURLが最適化されており、ニュースページのURLは元のシステムとは異なります。最初は、誰かがまだ古いシステムを使用しているためだと思いましたが、翌日になっても同じ状況が発生したため、古いシステムに問題があるのではないかと思いました。後で確認したところ、Empire CMS システムに問題があることがわかりました。ホームページを更新するというデフォルトのタスクがあるため、キャンセルしました。その後、Web サイトのホームページは正常に更新されます。
この問題を解決した後、以前に学習したことはあったものの、実際には実践していなかった PHP タスクに興味を持ちました。おそらく、Web サイトのシステム開発におけるこの機能の重要性を考慮して、今すぐ学習して一連のプログラムを作成することにしました。将来のアプリケーションに備えた成熟したコード。
1 つ目は、関連する情報をオンラインで検索することです。この情報を読んで、PHP のタスクは大きく 3 つのカテゴリに分類できることがわかりました。
サーバーのスケジュールされたタスク
WIN サーバーはスケジュールされたタスクを直接使用して関連アプリケーションを実行でき、Linux サーバーは /etc/crontab にスケジュールされたタスクを追加することで実装できます。
無限ループによる自動タスク実行
プログラム ファイル ページを作成し、ignore_user_abort を使用してブラウザ ページを閉じた後に実行可能に設定すると、プログラム ページの実行後、必要なタスク プランが常に自動的に実行されます。一般の PHP プログラマは、自信がなければ、この操作は許可されません。無限ループにより簡単にサーバーがクラッシュする可能性があるためです。
トリガーされたスケジュールされたタスク
Discuz、Empire CMS など、私が知っているいくつかのプログラムの中で、これらはすべてこの方法を使用してシステムのスケジュールされたタスクを完了します。前の 2 つの方法と比較すると、これが最も安全で簡単です。
選択肢が非常に多いため、プログラムを設計するときは、実際のニーズに基づいて最も適切なプログラム方法を選択する必要があります。例を用いて紹介しましょう。
AiLiterature.com の電子雑誌は、ウェブサイトの開設直後に作成されました。これは、電子雑誌の最新号を購読者のメールボックスに送信するだけで大変な作業です。ページの送信は明らかに機能しません。主な理由は、現在、News、Tencent、163 が提供するメールボックスなどの独自のメール サーバーが存在しないことです。SMTP によるメール送信はサポートされていますが、大量のメールの送信は条件が制限されています。したがって、この問題はプログラムによってのみ解決できます。
まず、電子メールを送信するプログラムがユーザーの Web サイト訪問体験 (主に Web サイトのページを開く速度) に影響を与えないようにするために、トリガーの実装に Ajax を使用することにしました。パブリック JS ファイルにトリガー関数を追加すると、ユーザーは任意のページにアクセスしたときに電子メール送信タスクをトリガーできます。
メールの送信頻度を制限し、あまりに頻繁にメールを送信することでメールサーバーから禁止されることを防ぐため、プログラム内で時間制限を設け、ランダムに待ち時間を生成することで問題を解決しています。実際、トリガーモードの間隔は一定ではありませんが、Web サイトへのアクセス数が多い場合には、このような問題が発生する可能性がありますので、この設定を追加した方が安全です。尊重する。
上記の対策を講じたにもかかわらず、実際のアプリケーションでは、メール サーバーのメール送信が禁止されることが判明していますが、永久に禁止されるわけではありません。この問題を解決する方法は、あるメール サーバーが正常にメールを送信できない場合に、別のメール サーバーに自動的にジャンプするように、さまざまなメール サービスの SMTP パラメーターを保存する配列を作成することです。
収集したメールアドレスのリストには、メールの送信中に無効なアドレスが含まれます。一度送信に失敗した場合は、別のメールサーバーに切り替えて再度送信してください。このメールアドレスを無効な場合に設定します。にすると、今後このアドレスにメールが送信されなくなるため、メール アドレス リストの効率が向上し、次回メールを送信する時間を節約できます。
一部の友人は、私がこの種のブログで共有するコードが少なすぎる、と言っています。実際、インターネットで情報を検索すると、多くの Web サイトで共有されているコードが必ずしも実用的ではないことがわかります。これらのコードを参照するために多くの時間がかかるため、要約するときに、問題を解決する方法を要約し、将来同じような問題が発生したときに参照できるように、主要な技術パラメータを書き留めることがよくあります。この点に関してご質問がございましたら、メッセージまたは電子メールでお問い合わせください。
著者ハッピーボーイのパーソナルスペース