sql >> Databáze >  >> RDS >> Mysql

Jak naplánovat dynamickou funkci s úlohou cron?

Úlohy Cron vyžadují, abyste přednastavili časy, ve kterých se spouštějí, nemohou (ano, můžete to hacknout tím, že budete mít skript, který upraví váš crontab, ale neřekl bych, že je to moc dobrý nápad) mít svůj čas ke spuštění rozhodovat dynamicky. To znamená, že máte v podstatě dvě možnosti:

1) Nastavte cronjob tak, aby se spouštěl každou minutu, a pomocí dočasného souboru, na který se dotknete, sdělte, kdy naposledy spustil jednu z naplánovaných úloh. Při každém spuštění zkontroluje, zda mezi posledním časovým razítkem byla spuštěna nějaká úloha. váš dočasný soubor a aktuální čas, a pokud existuje, spustí úlohu. Toto je hrubé, ale jednoduché řešení.

2) Nepoužívejte cron. Vytvořte démona, který zkontroluje, kolikrát je třeba úlohy spustit, a zařadí je do prioritní fronty, poté zobrazí nejstarší prvek a uspí, dokud není čas tuto úlohu spustit. Spustí úlohu a znovu ji vloží, aby byla spuštěna 24 hodin v budoucnu, a opakuje se. Toto řešení je mnohem elegantnější, ale také vyžaduje více práce.



  1. INT vs jedinečný identifikátor pro pole ID v databázi

  2. Použití virtuálních polí v cakePHP 2.x

  3. Nelze vložit explicitní hodnotu pro sloupec identity v tabulce 'tabulka', když je IDENTITY_INSERT nastaveno na OFF

  4. Prodleva Oracle mezi potvrzením a výběrem