sql >> Database >  >> RDS >> Mysql

automatisch een php-scriptuitvoering plannen op een specifiek tijdstip

Je hebt 3 opties. Mijn aanbeveling:gebruik cron als het kan, gebruikersgericht als het moet, en daemon als laatste redmiddel.

(1) cron (zoals vermeld in opmerkingen)

cron is een planner voor linux-systemen die een opdrachtregeltaak op uw systeem uitvoert. U logt in op uw server via ssh, typ crontab -e , en voeg een regel als deze toe:

4 5 * * * php /path/to/my/script.php

Dit zou het script elke dag om 5:04 uur uitvoeren.

<?php
// /path/to/my/script.php

// Do something

Bij sommige hostingdiensten is het mogelijk om cron-taken in te voeren met een GUI. Er zijn ook externe cron-services, die op bepaalde tijden een URL voor je aanroepen.

(2) daemon

Dit is de meest geavanceerde optie en ook de minst betrouwbare:u voert een opdrachtregelscript uit dat een oneindige lus bevat. Het script controleert vervolgens periodiek de status en reageert erop. Omdat het waarschijnlijk crasht na maanden van draaien, moet je een tweede script hebben om het opnieuw te starten voor het geval dat het geval is. Dit is veel werk, maar het is de meest flexibele aanpak.

<?php



while (1) {   

  // fetch $last_exec_timestamp from database

  if ($last_exec_timestamp < time() + 86400) {
    // set last_exec_timestamp to now in database

    // do something
  }
  sleep(5);

}

3. gebruikersgestuurd

Als u een behoorlijke hoeveelheid verkeer op uw site heeft, kunt u eenvoudig een the job this in uw paginavoettekst opnemen, wanneer er geen output meer is. Zorg ervoor dat deze code snel is, anders zit een ongelukkige gebruiker erop te wachten.

<?php

// fetch $last_exec_timestamp from database

if ($last_exec_timestamp < time() + 86400) {
  // set last_exec_timestamp to now in database
  // do something
}

Er zijn ook meer mooie benaderingen van "door de gebruiker aangestuurd" die ik niet persoonlijk heb getest in een andere stack-overflow vraag .



  1. Postgresql, waarde voor specifieke sleutel ophalen uit json-array

  2. Android:Json kan geen bestanden ophalen uit de mysql-database, deze is leeg

  3. Is er een manier om een ​​automatisch oplopende Guid Primary Key in een Oracle-database te maken?

  4. Een goede gewoonte om verbindingen in een asp.net-toepassing te openen/sluiten?