Dateisynchronisation von files und Datenbank triggern
Hallo,
ich versuche gerade die Dateisynchronisation zwischen den Dateien im Ordner "files" und der Datenbank anzustoßen. Es gibt dafür im Backend ja einen Button im Bereich "Dateiverwaltung".
Aber ich möchte das Ganze gern über ein Script realisieren. Ich finde nur einfach nicht die Richtige Methode den dazugehörigen Aufruf dafür. Mein Überlegung war die Funktion "sync" aus DC_Folder.php zu nutzen, nur weiß ich nicht so recht wie ich diese Funktion aufrufen soll, oder ob es überhaupt die richtige Funktion ist.
Ich wollte das Ganze erst einmal ganz simple von einer externen Datei aus starten und habe ich an der cron.php orientiert und folgendes geschrieben:
PHP-Code:
<?php
/**
* Initialize the system
*/
define('TL_MODE', BE');
require '../initialize.php';
class Synchronisation extends Backend
{
/**
* Initialize the object (do not remove)
*/
public function __construct()
{
parent::__construct();
// See #4099
define('BE_USER_LOGGED_IN', false);
define('FE_USER_LOGGED_IN', false);
}
public function start()
{
$dc = new DC_Folder("");
$dc->sync();
}
}
/**
* Instantiate controller
*/
$sync = new Synchronisation();
$sync->start();
Könnt ihr mir einen Denkanstoß geben, was ich falsch mache :o
Vielen Dank
Robert
Liste der Anhänge anzeigen (Anzahl: 1)
Nun mein absoluter Pfad (cyon-Server) zur filesync-Datei würde lauten:
Code:
https://server46.cyon.ch/~sonjaund/system/bin/filesync
Nun ergibt das aber quasi eine Verdoppelung der Basis-URL, da '/home/sonjaund/public_html' das Root des Webhosts darstellt:
Code:
... Warning: include(): Failed opening '/home/sonjaund/public_html/https://server46.cyon.ch/~sonjaund/system/bin/filesync' ...
Anhang 16684
Weswegen ich dann wieder den relativen Pfad verwende:
Code:
system/bin/filesync
Beim sofortigen Ausführen des crons führt das aber zu folgender Fehlermeldung:
Code:
#!/usr/bin/env php
Warning: in_array() expects parameter 2 to be array, null given in system/bin/filesync on line 22
#0 [internal function]: __error(2, 'in_array() expe...', '/home/sonjaund/...', 22, Array)
#1 system/bin/filesync(22): in_array('-h', NULL)
#2 system/modules/cron/public/CronStart.php(169): include('/home/sonjaund/...')
#3 system/modules/cron/public/CronStart.php(131): CronStart->runJob(Object(Contao\Database\Mysqli\Result))
#4 system/modules/cron/public/CronStart.php(181): CronStart->run()
#5 {main}
Fatal error: Cannot redeclare __error() (previously declared in /home/sonjaund/public_html/system/helper/functions.php:21) in /home/sonjaund/public_html/system/helper/functions.php on line 21
Und hier verstehe ich zu wenig...
Wichtigste Frage:
Ist das Aufrufen (ganz allgemein gesprochen) der Datei "filesync" überhaupt korrekt, wenn man die Synchronisation anstossen will?
Zweite Frage:
Kann die Extension [cron] die Synchronisation bzw. filesync überhaupt anstossen?
Lg Nick