2017-01-01 2 views
-1

Okay, es ist eher wie ein Vorschlag, wie würde ich tun.So führen Sie eine Abfrage zu bestimmten Zeitpunkt gegeben PHP

Ich habe eine Tabelle, die Produkte hat. Was ich mache ist, dass sie Ablaufdatum wie zum Beispiel 31-12-16 jetzt eingestellt haben, wenn ein Benutzer sich anmeldet, dann kann ich eine Abfrage zu diesem Zeitpunkt ausführen, dass jedes Produkt, das Ablaufdatum weniger als das aktuelle Datum als disabled markiert ist. Aber das ist keine angemessene Lösung. Wenn sich der Benutzer nicht anmeldet, würden die Produkte disabled nicht markiert haben, bis er sich anmeldet.

Ich wurde vorgeschlagen, cron-job anzuwenden. Aber ich weiß nicht, was es ist.

Kann jemand vorschlagen, wie ich dieses Problem automatisch erreichen würde? Sie sind deaktiviert, unabhängig davon, ob sich der Benutzer anmeldet oder nicht.

+0

http://askubuntu.com/questions/2368/how-do-i-set-up-a-cron-job –

+0

@Dagon Ich habe sehr wenig Zeit und ich muss Cron-Job von Grund auf neu lernen! Außerdem habe ich noch andere Projekte zu erledigen. Ich bin hier, um einen Vorschlag zu bekommen, der am einfachsten und effizientesten ist. Wenn Sie einen Vorschlag haben, sagen Sie bitte, sonst werden Sie nicht belästigt! – Beenu

+0

Cron Jobs sind wirklich einfach zu erlernen. Sie fügen der Datei nur eine Zeile hinzu, die den auszuführenden Befehl und den Zeitplan für die Ausführung angibt. Der Befehl ist etwas wie 'php/path/to/script.php'. – Barmar

Antwort

1

Die einfachste Möglichkeit besteht darin, eine MySQL event zu erstellen, die täglich ausgeführt wird und die abgelaufenen Produkte auf disabled aktualisiert.

MySQL Ereignisse

DELIMITER $$ 
CREATE PROCEDURE check_products() 
BEGIN 
// Place your update query here 
// It is executed every day. 
END $$ 
DELIMITER ; 


DELIMITER $$ 
CREATE 
    EVENT `disable_expired_products` 
    ON SCHEDULE EVERY 1 DAY 
    DO BEGIN 
    CALL check_products(); 
END $$ 
DELIMITER ; 

nehmen Bitte beachten Sie MySQL Ereignisse sind standardmäßig deaktiviert und müssen durch event_scheduler=1 Platzierung innerhalb [mysqld] von /etc/mysql/my.cnf

Cronjob

  1. aktiviert werden Geh zu deinem Shell-Typ cront ab -e
  2. Richten Sie den Cronjob, für jede Nacht Beispiel die Ausführung bei 01.15

    15 1 * * * php /home/user/update.php

update.php hat Ihre Zeilen zu holen, und aktualisieren Sie diese nach Ihren Wünschen.

Eine Ansicht auf die Tabelle könnte auch nützlich sein, abhängig von Ihren Anforderungen.

+0

Das scheint hilfreich, wenn es ein kurzes Skript für Cronjob geben kann, gibt es viele Probleme, die für mich gelöst werden würden! –

+0

Ich habe meiner Antwort hinzugefügt, wie man einen Cronjob einrichtet. – user3606329

+0

Oh Gott! Das ist einfach! Eine letzte Frage. Es würde Mysql Leistung auf der Website nicht beeinträchtigen, richtig? Es würde es nicht verlangsamen? – Beenu

Verwandte Themen