Runonce: Unterschied zwischen den Versionen
Aus Contao Community Documentation
(→Modulebasierte runonce.php) |
K (Category entfernt) |
||
Zeile 1: | Zeile 1: | ||
− | |||
[[Category:Dev HOWTOS]] | [[Category:Dev HOWTOS]] | ||
[[Category:Dev Snippets]] | [[Category:Dev Snippets]] |
Version vom 9. Juni 2010, 23:49 Uhr
betrifft | |
---|---|
TYPOlight Version | ab 2.7 |
Contao Version | ab 2.9 |
Live Update nutzt diese, die Extensions nutzen diese auch: die Datei TL_ROOT/system/runonce.php
Diese Datei tut genau das, was der Name schon vermuten lässt. Sie wird nur einmal ausgeführt und anschließend gelöscht.
Bei jedem Seitenaufruf wird dazu geprüft, ob diese vorhanden ist und ggf. ausgeführt.
In der Extension legt man diese Datei dann ab im Pfad wie wie oben bereits angegeben.
Inhaltsverzeichnis
Anwendungsbeispiele
Löschen einer Datei
<?php @error_reporting(0); @ini_set("display_errors", 0); try { // Datei relativ zu TL_ROOT $file = 'system/modules/demo/delete_me.gif'; $objFiles = Files::getInstance(); $objFiles->delete($file); } catch (Exception $e) { $errors[] = $e->getMessage(); } ?>
Die Fehlerausgaben, sollte es welche geben, werden in diesem Beispiel unterdrückt.
Datenbank Insert / Update
<?php @error_reporting(0); @ini_set("display_errors", 0); $objDatabase = Database::getInstance(); // // Update database try { $objDatabase->execute("UPDATE `tl_demo_table` SET `demo_counter`=0 WHERE `demo_browser`='Unknown'"); } catch (Exception $e) { $errors[] = $e->getMessage(); } // // Insert database try { $objDatabase->execute("INSERT INTO `tl_demo_table` (`id`, `demo_counter`) VALUES (0, '10')"); } catch (Exception $e) { $errors[] = $e->getMessage(); } ?>
Datenbank Insert, OOP Variante
Quelle: Forum.
<?php class RunonceJob extends Frontend { public function __construct() { parent::__construct(); } public function run() { $arrInsert=array( 'action' => 'runonce', 'text' => 'runonce' ); $this->Database->prepare("INSERT INTO tl_log %s")->set($arrInsert)->execute(); } } $objRunonceJob = new RunonceJob(); $objRunonceJob->run(); ?>
Hinweis
Achtung: Vorsicht damit bei Extensions mit Abhängigkeiten zu weiteren Extensions. Bringen 2 Extensions jeweils eine runonce.php mit, wird nur eine ausgeführt! |
Hier ist der Author nicht sicher, ob die erste oder die letzte davon.
Modulbasierte runonce.php
Den nachfolgenden Code in die config.php des eigenen Modules einfuegen. Den Pfad anpassen und eine runonce.php im config Verzeichnis erstellen. Diese runonce.php wird beim naechsten Ausfuehren einmalig ausgefuehrt, und danach geloescht.
$runonceFile = '/system/modules/MODULNAME/config/runonce.php'; if (file_exists(TL_ROOT . $runonceFile)) { include(TL_ROOT . $runonceFile); $objFiles = Files::getInstance(); $objFiles->delete($runonceFile); }