Yii2 プログラミングガイド: Cron サービスの実行方法
「Yii とは何ですか?」という質問がある場合は、私の以前のチュートリアルを参照してください: Yii フレームワークの概要 ここでは、Yii の利点を確認し、 3 月にリリースされた Yii 2.0 の 2014-10 年の新機能の概要。 まあ>
この Yii2 によるプログラミング シリーズでは、読者に Yii2 PHP フレームワークの使用方法を説明します。今日のチュートリアルでは、Yii のコンソール機能を活用して cron ジョブを実行する方法を共有します。
以前は、cron ジョブで wget (Web アクセス可能な URL) を使用してバックグラウンド タスクを実行していました。これにより、セキュリティ上の懸念が生じ、パフォーマンス上の問題も発生します。 Boot Series のセキュリティ機能のリスクを軽減するいくつかの方法について説明しましたが、コンソール主導のコマンドに移行したいと考えていました。 Yii2 を使用すると、これは非常に簡単です。
今日の例では、私の Twixxr サイトでコンソールベースの cron コマンドをデモします。これについては、この Twitter API エピソードで説明します。レート制限とパフォーマンス管理の問題により、Twitter API は効率的で信頼性の高い cron ジョブに大きく依存しています。これは、皆さんと共有するのに最適な例です。
始める前に、繰り返しておきたいのですが、皆さんのアイデアやフィードバックにはいつも感謝しています。質問やトピックの提案がある場合は、以下のコメント欄に意見を投稿してください。 Twitter @reifman で直接私にご連絡いただくこともできます。
クロンとは何ですか?
Wikipedia では cron を「Unix に似たコンピュータ オペレーティング システムの時間ベースのジョブ スケジューラ」と説明しています。これは非常に正確です。基本的に、cron は、ログ管理やバックアップから API リクエスト、データベースのクリーンアップまで、Web サービスの実行に必要なすべてのバックグラウンド タスクを実行します。
サーバー上の既存の cron ジョブを表示するには、通常、sudo crontab -l
と入力すると、次のような内容が表示されます。
リーリー
「Cron ジョブを使用してタスクをスケジュールする (Envato Tuts)」 も参照してください。 Let's Encrypt スクリプトは独自のコンソール コマンドであることに注意してください。これはサーバー上のコマンドラインから実行されます。ただし、上記の会議スケジュール タスクはすべて wget 経由で実行されます。これは、バックグラウンド タスクを実行する Web アプリケーションに対して、特定の時間に Web ブラウザー上でリクエストを実行するボットのようなものです。
外部 Web リクエストに必要なオーバーヘッドとサーバー上のスクリプトのタイムアウト制約に加えて、これらのアクセス ポイントも保護する必要があります。会議プランナーがこれを行う方法の例を次に示します:リーリー
ユーザーが管理者としてログインしているか、同じインターネット IP アドレスを持つサーバー上でローカルに実行されているかを確認します。コンソールベースの Cron コマンドを実装する
Alex Makarov は、Yii フレームワークの開発における主要なボランティアの 1 人で、私が Envato Tuts フレームワークについて定期的に書いているとき、私の質問に答えてくれます。私のセキュリティインシデントを読んだ後、彼は私に、なぜ Yii2 のネイティブ コンソール機能を使用して cron ジョブを実行しなかったのかと尋ねました。基本的には分かりません。
/frontend/controllers/DaemonController.php と同じように、/console/controllers/DaemonController.php を作成しました。このチュートリアルでは、より小規模で単純な Twixxr Web サービスに対してこれを実行します。
私はコンソールを使用してデータベース移行を実行することに慣れていますが (例:
./yii merge/up 7
)、それだけです。バックグラウンドタスクの実行に使用してみたいと思います。
前のチュートリアルで書いたように、私の初期の Web サイト Twixxr では、女性が所有するインフルエンサーの Twitter アカウントと交流したいというすべてのユーザー リクエストを満たすために API 呼び出しを定期的にローテーションするために、多数のバックグラウンド プロセスが必要でした。
そこで私は、Twixxr がコンソールベースの cron コントローラーを実行するための優れたテスト プラットフォームであると考えました。
これは、新しいコンソールベースの DaemonController.php のコアです:
リーリー
これは、私のフロントエンド ベースのコントローラーと構造が非常に似ていますが、/console ツリーに配置されているため、ネットワーク経由で安全にアクセスできないことに注意してください。 Apache Web サーバー サイトは、このゾーンを参照するように構成されていません。したがって、上記の例では、
actionFrequent()
が 2 ~ 3 分ごとに呼び出されます。これは、別の一連の Twixxr 友情リクエストを処理します。一方、actionQuarter() は 15 分ごとに呼び出され、閲覧アカウントのプロファイル情報を更新します。 cron ファイルでスケジュールがどのように機能するかを見てみましょう。
新しいcrontabファイル
sudo crontab -e
と入力して編集するか、-l と入力して内容を一覧表示します。これが私の Twixxr cron ファイルです:
$ sudo crontab -l # m h dom mon dow command */3 * * * * /var/www/twixxr/yii daemon/frequent */15 * * * * /var/www/twixxr/yii daemon/quarter 0 * * * * /var/www/twixxr/yii daemon/hourly 15 1 * * * /var/www/twixxr/yii daemon/overnight 15 3 * * 5 /var/www/twixxr/yii daemon/weekly #40 2 * * * /usr/sbin/automysqlbackup 30 2 * * 1 /usr/bin/letsencrypt renew >> /var/log/le-renew.log
这非常简单。 /var/www/twixxr/yii daemon/frequent
的左侧是 yii 解释器所在的路径,右侧是控制台控制器和调用的方法。 p>
切换时一切都很顺利。我还没有切换 Meeting Planner,因为我想做更多测试。当后台任务中断时,很难知道也很难调试它们(尽管 Sentry 错误日志记录有很大帮助)。
需要考虑的问题
我遇到的一个问题是控制台命名空间与前端命名空间不同,因此,例如,我在教程中设置的 SiteHelper.php 组件(该组件描述了从单个代码库运行多个网站)失败了当我调用它时。删除它是有效的,但我需要运行测试以确保底层后台代码仍然有效。不过,大部分情况下切换都很顺利。
与任何其他代码更改一样,彻底测试和监控。
下一步是什么
展望未来,我将探索在 Yii2 框架内构建 REST API,该框架恰好依赖于创建一个不同的子树,例如控制台树,但用于外部 API。当然,这会带来复杂的身份验证和安全问题……所以与您一起探索这些将会很有趣。我将从多个角度研究 API。我对此感到非常兴奋。
请观看我的“使用 Yii2 编程”系列中即将推出的教程,我将继续深入研究该框架的不同方面。另请浏览“使用 PHP 构建您的初创公司”系列,其中记录了构建 Simple Planner 和 Meeting Planner 的过程。
如果您想知道下一个 Yii2 教程何时发布,请在 Twitter 上关注我 @reifman 或查看我的讲师页面以获取更新。
相关链接
- Yii2 Developer Exchange,我的 Yii2 资源站点
-
使用 Cron 作业安排任务 (Envato Tuts+)
- 如何在 Yii2 中实现 cron(Yii 文档)
- Twixxr,其中提到的示例网络服务
以上がYii2 プログラミングガイド: Cron サービスの実行方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









クラウド コンピューティング テクノロジの継続的な発展により、データのバックアップはすべての企業が行う必要のあるものになりました。この文脈では、可用性の高いクラウド バックアップ システムを開発することが特に重要です。 PHP フレームワーク Yii は、開発者が高性能の Web アプリケーションを迅速に構築できる強力なフレームワークです。ここでは、Yii フレームワークを使用して可用性の高いクラウド バックアップ システムを開発する方法を紹介します。データベースモデルの設計 Yii フレームワークでは、データベースモデルは非常に重要な部分です。データ バックアップ システムには多くのテーブルとリレーションシップが必要なため、

全角と半角のショートカット キーの使い方 全角と半角は中国語の入力方法でよく使用される 2 つの状態で、全角状態では 1 文字が 1 文字の位置を占め、半角状態では 1 文字が占められます。キャラクターの位置の半分を占めます。日々のワープロ作業では全角と半角を切り替える必要があることが多く、ショートカットキーを使いこなすことで作業効率が向上します。この記事では全角と半角を切り替えるショートカットキーの使い方ガイドを紹介します。 1. Windows システムでの全角と半角の切り替え Windows システムで全角と半角の状態を切り替えるには、通常、次のコマンドを使用します。

Web アプリケーションの需要が高まるにつれ、開発者が開発フレームワークを選択する選択肢はますます増えています。 PHP フレームワークとして人気のある Symfony と Yii2 は、どちらも強力な機能とパフォーマンスを備えていますが、大規模な Web アプリケーションを開発する必要がある場合、どちらのフレームワークがより適しているのでしょうか。次に、より良い選択を行うために、Symphony と Yii2 の比較分析を行います。基本概要 Symphony は、PHP で書かれたオープンソースの Web アプリケーション フレームワークであり、上に構築されています。

Yii フレームワークは、Web アプリケーション開発のプロセスを簡素化するための多数のツールとコンポーネントを提供するオープンソースの PHP Web アプリケーション フレームワークであり、その重要なコンポーネントの 1 つがデータ クエリです。 Yii フレームワークでは、SQL に似た構文を使用してデータベースにアクセスし、データを効率的にクエリおよび操作できます。 Yii フレームワークのクエリビルダーには主に次の種類があります: ActiveRecord クエリ、QueryBuilder クエリ、コマンド クエリ、独自の SQL クエリ

インターネットの発展に伴い、Web アプリケーション開発の需要もますます高まっています。開発者にとって、アプリケーションの開発には、開発効率を向上させる、安定性、効率性、強力なフレームワークが必要です。 Yii は、豊富な機能と優れたパフォーマンスを提供する、優れた高性能 PHP フレームワークです。 Yii3 は Yii フレームワークの次世代バージョンであり、Yii2 に基づいてパフォーマンスとコード品質をさらに最適化します。この記事では、Yii3 フレームワークを使用して PHP アプリケーションを開発する方法を紹介します。

現在の情報化時代では、ビッグデータ、人工知能、クラウド コンピューティング、その他のテクノロジーが大手企業の焦点となっています。その中でも、高性能なグラフィックス処理技術として、グラフィックスカードレンダリング技術がますます注目を集めています。グラフィックス カード レンダリング テクノロジは、ゲーム開発、映画やテレビの特殊効果、エンジニアリング モデリングなどの分野で広く使用されています。開発者にとって、自分のプロジェクトに合ったフレームワークを選択することは非常に重要な決定です。現在の言語の中でも PHP は非常に動的な言語であり、Yii2、Ph などの優れた PHP フレームワークもいくつかあります。

PHP 日付プログラミング ガイド: PHP を使用して特定の日付の曜日を決定する方法を説明します。PHP プログラミングでは、日付と時刻に関連した問題に対処する必要があることがよくあります。一般的なニーズの 1 つは、日付を決定することです。特定の日付の週。 PHP には、この機能を簡単に実装できる豊富な日付と時刻の処理関数が用意されています。この記事では、PHPで特定の日付の曜日を判断する方法と具体的なコード例を詳しく紹介します。 1. date() 関数を使用して曜日を取得する PHP の date() 関数は、書式設定に使用できます。

Go 言語 (Golang) は Google によって開発されたプログラミング言語で、その設計はシンプルで効率的であり、強力な同時実行機能を備えているため、多くの開発者に好まれています。この記事では、Go 言語プログラミングの簡単な入門ガイドを提供し、基本的な概念と構文を紹介し、Go 言語プログラミングをより深く理解して学習するのに役立つ具体的なコード例を添付します。環境のセットアップと構成の最初のステップは、Go 言語の開発環境をセットアップすることです。 Go 公式 Web サイト (https://golang.org/) にアクセスできます。
