2011-12-28 2 views
0

基本的には、X日ごとにテーブルを切り捨てたいが、私はcronを使いたくない。私はこれを行うにはPHPファイル内のスクリプトで構築された一種を持っていると思います、多分SQLのトリガーは私を助けることができます。残念ながら、私はそれらを使う方法を知らない。cron以外のSQLコードを定期的に実行する方法はありますか?

+0

cronを使用できない理由はありますか?それはおそらく最も簡単で最も明白な解決策です。 – Polynomial

+0

phpとsqlを単独で使用していますか?いいえ。 – Alfabravo

答えて

0

のMySQLのバージョンによっては、MySQLがスケジュールされた時間で、独自のプロセスをトリガすることができますCREATE EVENTへのアクセス権を持っているかもしれません。

あなたが使用しているデータベースを識別しませんが

他のデータベースは、同等であってもよい毎日のタスクを実行するには

CREATE EVENT myevent 
    ON SCHEDULE EVERY 1 DAY 
    DO 
     UPDATE myschema.mytable SET mycol = mycol + 1; 

+0

私はmysqliを使用していますが、それに当てはまりますか? – menislici

+0

Mysqliはデータベースではなく、PHPとMySQLデータベース間のインターフェースです...それはどういう意味ですか、MySQLをデータベースとして使用しているので、そうです!あなたはそれを使用することができます(最初に使用しているMySQLのバージョンを確認してください) –

+0

私のmysqlバージョンは5.5.8です。 EVENTがサポートされていると仮定すると、以下のように非手続き型スタイルを使用してこれを行うことができます:$ sql = "CREATE EVENT myevent ON SCHEDULE EVERY 1 DAY DO UPDATE myschema.mytable SET mycol = mycol + 1; $ result = $ connect-> query($ sql)またはdie(mysqli_error()); ? – menislici

3

最後に空になったときに各ページの訪問時にチェックするものを作成できます。最後の時間があなたが望む時間よりも長い場合は、それを空にします。あまり効率的ではありませんが、cronを使用できない、または使用したくない場合は、これが可能です。

+0

私はデータベースのタイムスタンプで作業する必要がありますね。 – menislici

0

私のサイトには、私自身の "cron"システムがあります。私は、ページがロードされた直後に、私のcronスクリプトにajaxリクエストを行います。現在の日付をデータベースに格納されている最後のcronの日付と比較し、[現在の日付 - 最後のcronの日付]が指定されたインターバルより大きい場合は、cronスクリプトを実行し、最後のcron日付を更新します。私はajaxでそれをやったので、非常に重いcronジョブを作ってユーザページの読み込みに影響を与えません。また、このcronは、ユーザーがあなたのページにアクセスした場合にのみ実行されます。多くの場合、usersがあなたのページにアクセスしていない場合は、cronを終了する必要はありません。

関連する問題