EE2 ForumsとEE1 Forumsには、cronジョブをさまざまな用途に使用する人がたくさんいます。
最も人気のある使用が予定さcronジョブをコマンドラインPHPスクリプトを使用して、automatically closing expired entriesのようだ:
#!usr/local/bin/php -n
<?php global $PREFS; // ee_cli_sql.php v0.3.5
/* Copyright (c) 2003 - 2007 EllisLab, Inc. --- ExpressionEngine 1.6.0.
Some code by Ingmar Greil, 2007. <[email protected]>
My modfications and code released under a Creative Commons
"Attribution" license: http://creativecommons.org/licenses/by/2.0/
This PHP command line script allows you to perform arbitrary
SQL queries on your EE database. There will be no visible output
(in this case we'd simply use the Query module in a template, right?),
since the whole point is to run this script unattended.
Put this file in your EE "system" folder, make sure the executable
bit is set (chmod +x ee_cli_sql.php), then call manually or via cron.
Try "crontab -e".
"5 * * * * command" will run your script 5 minutes past the hour, every hour.
"0,10,20,30,40,50 6-22 * * * 1-5" will run your script every ten minutes
between 6am and 10pm, except on weekends. The general syntax is:
<Minute> <Hour> <Day> <Month> <Day of Week> <Command line>
*/
// This query will set all expired entries to "closed" status:
$query = "UPDATE `exp_weblog_titles` SET status = 'closed' WHERE status <> 'closed'
AND expiration_date <> '0' AND expiration_date < UNIX_TIMESTAMP()";
// Change the above query to suit your needs.
// That's it, folks! No user-serviceable parts below.
define("EXT",".php"); // Get around EE's security mechanisms. Kludgy? Hell, yes.
// Got a better solution? I am all ears.
require("config".EXT); // Read the config file
require("core/core.prefs".EXT); // Load the PREFS cass
$PREFS = new Preferences(); $PREFS->core_ini = $conf; unset($conf);
$db = mysql_connect( // Handle the connection to the database:
$PREFS->core_ini['db_hostname'], // hostname,
$PREFS->core_ini['db_username'], // username and
$PREFS->core_ini['db_password']); // password are all pulled automatically.
mysql_select_db($PREFS->core_ini['db_name']); // Now it's selecting the appropriate db,
mysql_query($query,$db); // performing the actual query, then
mysql_close(); // cleaning up after ourselves. Done.
?>
ExpressionEngineのWikiの記事は、スクリプトを設定し、予定されているどのようにいくつかの洞察を提供します。
このPHPコマンドラインスクリプトを使用すると、 はEEデータベース上で任意のSQLクエリ を実行できます。 目に見える出力はありません(この場合、 テンプレートでクエリモジュールを使用します)。 ポイント全体がこのスクリプト を実行するためです。
が フォルダあなたのEE「システム」でこのファイルを入れて、実行可能なビット が、その後(chmodの+ X ee_cli_sql.php)、 コール手動またはcronを経由して設定されていることを確認してください。
あなたではなくあなたのcronジョブを管理するために、CLI(コマンドラインインターフェイス)を使用したくない場合、あなたは定期的に、スケジュールに基づいてプラグインやモジュールを呼び出すように設定することができ、EllisLabからCron Pluginを検討するかもしれません。
出典
2011-05-26 17:20:44
rjb
期限切れのエントリを自動的に閉じるリンクが機能しない – williamcarswell
EllisLabが2012年11月にサイトを再設計したとき、彼らはWikiを継承していないように見えます - すべてのリンクは単にellislab.comにリダイレクトされています。幸いにも、私は[インターネットアーカイブWayBackマシン](http://web.archive)から元の記事を掘り起こすことができました。org/web/20120103211342/http://expressionengine.com/wiki/Automatically_close_expired_entries) – rjb