Emailversand und FTP-Transfer erfolgt nicht aus Perl

MyOOS [Dumper]ist ein Sicherungsprogramm für MySQL-Datenbanken. Damit können Sicherungskopien der Daten (Forum, Shop, Blog, usw.) erstellt und bei Bedarf auch wieder hergestellt werden. Besonders bei Web-Space ohne Shell-Zugang bietet sich MyOOS [Dumper] als sinnvolle Alternative an.
LuMaReMa
Beiträge: 8
Registriert: 22.05.2022, 10:30

Emailversand und FTP-Transfer erfolgt nicht aus Perl

Beitrag von LuMaReMa »

Hallo!
Erst mal vielen Dank für die Weiterführung des Dumpers. Es ist schön. dass dieses nützliche Tool wieder gepflegt wird.

Mein Problem:
Wenn ich aus dem Programm das php-Backup manuell anstoße erfolgt nach Beendigung ein Mailversand und die gepackte Datei wird auf meinen Account bei beplaced übertragen.
Da mein Forumshoster (All-Incl) in gebuchten Paket keine Cronjobs anbietet bin ich - wie damals beim MSD - auf einen externen Dienst angewiesen. Ich benutze cronjobservice.net in der Freevariante. Das Backup läuft und die gepackte Datei liegt im Verzeichnis work/backup. Allerdings erfolgt kein FTP-Transfer und auch kein Mailversand. Laut dem Logfile wurden alle Module geladen:
22.05.2022 02:01:07 Configuration 'myoosdumper.conf.php' loaded successfully from Querystring.
22.05.2022 02:01:07 Compression Library loaded successfully...
22.05.2022 02:01:07 FTP Library loaded successfully...
22.05.2022 02:01:07 FTP-SSL Library loaded successfully...
22.05.2022 02:01:07 Mail Library loaded successfully...
22.05.2022 02:01:07 Starting backup using Perlscript version 5.0.19 (using perl v5.26.1)
22.05.2022 02:01:07
Starting to backup database `d0208fdf` (1/1).
22.05.2022 02:01:07 Characterset of connection and backup file set to utf8mb4.
22.05.2022 02:01:07 Searching for tables inside database `d0208fdf`.
22.05.2022 02:01:08 Found 119 tables with 1212038 records.


LG Ludger
r23
Beiträge: 1764
Registriert: 18.09.2008, 05:56
Wohnort: Hagen
Kontaktdaten:

Re: Emailversand und FTP-Transfer erfolgt nicht aus Perl

Beitrag von r23 »

Hallo,

bitte einmal das perltest.p Script ausführen und das Protokoll posten.

Welche FTP Verbindung soll aufgebaut werden? sFTP steht zum Beispiel in Perl nicht zur Verfügung.


In der Regel sichert Perl die Datenbank und beendet die Sicherung mit

Code: Alles auswählen

write_log("Finished backup of database `$dbname`.\n");
Finished backup of database _datenbank_name_

^- gibt es die Zeile in den Logs?


Wenn nicht, welche Fehlermeldung erhält man und was sagt der Provider zu dieser?
LuMaReMa
Beiträge: 8
Registriert: 22.05.2022, 10:30

Re: Emailversand und FTP-Transfer erfolgt nicht aus Perl

Beitrag von LuMaReMa »

perltest lässt sich nicht ausführen, weder aus dem Programm noch über den Browser. Es kommt die Fehlermeldung" 403 * Forbidden - You don't have permission to access this resource"

Die Zeile "Finished backup of database _datenbank_name_" gibt es weder im Perl-Log noch im Perl-Complete Log.
Im Perl-Log steht:
23.05.2022 02:03:14 ***********************************************************************
23.05.2022 02:03:14 Starting backup using Perlscript version 5.0.19 (using perl v5.26.1)
23.05.2022 02:03:14 Using configuration myoosdumper.conf.php
23.05.2022 02:03:15 Dumping data into file `d0208fdf_2022_05_23_02_03.sql.gz`
Das Perl-Complete Log endet mit diesen Zeilen:
23.05.2022 02:03:26 Dumping table `esterelforum_statistics_domains` (Type MyISAM):
23.05.2022 02:03:26 259 inserted records (size of backupfile: 14.57 MB)
23.05.2022 02:03:26 Dumping table `esterelforum_statistics_online` (Type MyISAM):
Im Verzeichnis work/backup wurde eine Sicherungsdatei angelegt.

Wenn ich mir das Complete Log anschaue - kann es sein, dass das Programm da abbricht? In der vorletzten Zeile steht ja was von "inserted records..."
Hinter der letzten Zeile steht das nicht mehr.

Übertragung soll erfolgen mit normalen FTP. Funktioniert auch, wenn ich Backup Php benutze.
Das FTP-Log auf dem Server enthält keine Fehler. Im fraglichen Zeitraum (02:00 Uhr nachts) gibt es keine FTP-Bewegung im Log. De letzte Eintrag ist von 23:50h, als ich mit Filezilla was übertragen habe.

LG Ludger
r23
Beiträge: 1764
Registriert: 18.09.2008, 05:56
Wohnort: Hagen
Kontaktdaten:

Re: Emailversand und FTP-Transfer erfolgt nicht aus Perl

Beitrag von r23 »

Hallo,

das Perl Script bricht augenscheinlich ab.


23.05.2022 02:04:44 Dumping table `<strong>ssd_users</strong>` <em>(Type MyISAM)</em>:
23.05.2022 02:04:44 <em>3 inserted records (size of backupfile: 549.05 KB)</em>

^- in dieser Zeile steht, wieviele Dantensätze erfolgreich gesichert wurden und die Größe von der Backup-Datei.

23.05.2022 02:04:44 <hr>Finished backup of database `xxxxx`.
23.05.2022 02:04:44 Sending E-Mail ...
23.05.2022 02:04:44 <font color="green">E-Mail sent successfully.</font>
23.05.2022 02:04:44 Recipient/s: xxxxx

^_ Danach folgt der Mail versandt.


23.05.2022 02:04:44 <b>Starting autodelete function: </b>Keep the latest <font color="#0000FF">3</font> backup files for each database and delete older ones.
23.05.2022 02:04:44 Autodelete: old backup file <font color=red><b>xxxxx_07_00_36.sql.gz</b></font> deleted.
23.05.2022 02:04:44 <hr>Everythings is done: closing script <strong>23.05.2022 02:04:44</strong>
23.05.2022 02:04:44 <em>total time used: 2 sec.</em>
23.05.2022 02:04:44 #EOS (End of script)<hr></body></html>


Beste Grüße

Ralf
LuMaReMa
Beiträge: 8
Registriert: 22.05.2022, 10:30

Re: Emailversand und FTP-Transfer erfolgt nicht aus Perl

Beitrag von LuMaReMa »

Habe gerade mal in den FAQ von cronjobservices.net geschaut und das hier gefunden:
Wie lange werden die Skripte ausgeführt?
Jeder Cronjob wird maximal 30 Sekunden lang ausgeführt. Sollte ihr Skript nach 30 Sekunden aber noch nicht fertig sein, können Sie z.B. in PHP das Skript trotzdem weiterlaufen lassen. Dafür müssen Sie in Ihr PHP-Skript folgendes in die erste Zeile einfügen:

set_time_limit(0);
ignore_user_abort(true);

In anderen Programmiersprachen ist dies ähnlich. Schauen Sie dafür bitte in die entsprechende Dokumentation.
Kann es daran liegen? Wenn ja, in welche Datei müssen die Zeilen rein?

LG Ludger
r23
Beiträge: 1764
Registriert: 18.09.2008, 05:56
Wohnort: Hagen
Kontaktdaten:

Re: Emailversand und FTP-Transfer erfolgt nicht aus Perl

Beitrag von r23 »

Hallo,

crondump.pl hat ein Umlaute (ein utf-8 Problem?)
Ich habe dies geändert.
https://github.com/r23/MyOOS-Dumper/com ... f08f017f5b

evtl. reicht ja ein Austausch der Datei aus.
https://github.com/r23/MyOOS-Dumper/blo ... rondump.pl

Beste Grüße

Ralf
LuMaReMa
Beiträge: 8
Registriert: 22.05.2022, 10:30

Re: Emailversand und FTP-Transfer erfolgt nicht aus Perl

Beitrag von LuMaReMa »

Der Austausch der crondump.pl hat leider keinen Erfolg gebracht. Wo müssten die Zeilen mit set_time_limit eingesetzt werden? Wenn ich sie in die crondump.pl einsetze kommt ein Fehler. Gehe ich Recht in der Annahme, das es daran liegt, weil das Script Perl ist?
Kann man diese Vorgabe auch in Perl erstellen bzw. in welche php-Datei müsste es eingetragen werden?

LG Ludger
Zuletzt geändert von LuMaReMa am 23.05.2022, 18:41, insgesamt 1-mal geändert.
r23
Beiträge: 1764
Registriert: 18.09.2008, 05:56
Wohnort: Hagen
Kontaktdaten:

Re: Emailversand und FTP-Transfer erfolgt nicht aus Perl

Beitrag von r23 »

Hallo,

set_time_limit ist ein PHP Befehl:
https://www.php.net/manual/de/function. ... -limit.php

Mir ist kein Provider bekannt, der seinen Kunden mal eben erlaubt, die Laufzeit von PHP Scripten zu verlängern. Und wenn ein Provider dies erlaubt, hat er dafür in der Regel einen Konfigurationsbereich auf seinem Kunden-Account und erwartet einen anderen Vertrag. (Mehr Geld)


Bei Perl gibt es vermutlich ähnliche Befehle. Zum Beispiel
https://metacpan.org/pod/Time::Limit


Aber solange man keine Fehlermeldung aus einer Server Log hat - kann man nur RATEN und sicherlich sollte man nicht mal eben irgendwelche Serverkonfigurationen ändern, nur weil in irgendeiner FAQ etwas stand.

Open Source richtet sich an Anwender, die selber *programmieren* möchten.

Ich biete hier keine Schulungen für PHP oder Perl an.

Beste Grüße

Ralf
e-dschungel
Beiträge: 28
Registriert: 01.02.2022, 20:58

Re: Emailversand und FTP-Transfer erfolgt nicht aus Perl

Beitrag von e-dschungel »

r23 hat geschrieben: 23.05.2022, 19:18 Mir ist kein Provider bekannt, der seinen Kunden mal eben erlaubt, die Laufzeit von PHP Scripten zu verlängern. Und wenn ein Provider dies erlaubt, hat er dafür in der Regel einen Konfigurationsbereich auf seinem Kunden-Account und erwartet einen anderen Vertrag. (Mehr Geld)
Na klar, die gibt es, zum Beispiel LuMaReMa's Provider all-inkl.com, z.B. über das Erstellen einer .user.ini Datei.

Hier geht es aber um etwas anderes. Die Skriptlaufzeit bei all-inkl ist (erstmal) irrelevant, nach 30 Sekunden disconnected sich der Client von cronjobservice.net. Ist ein PHP-Script bis dahin nicht durchgelaufen, wird es beendet (unabhängig von Timeouts). ignore_user_abort(true); verhindert diesen Abbruch bei einem Clientdisconnect und lässt das Skript weiterlaufen bis der Timeout erreicht ist.

Perl hat im Gegensatz zu PHP bei den Providern im Allgemeinen kein Timeout, daher benutzt der Dumper ja gerade Perl ;) Wie man das Perl-Skript allerdings beim Clientdisconnect weiterlaufen lässt, weiß ich leider nicht.

Läuft der Dump denn durch, wenn du die Perl-URL im Browser aufrufst? Sonst ist das hier ein anderes Problem...

Gruß
e-dschungel
LuMaReMa
Beiträge: 8
Registriert: 22.05.2022, 10:30

Re: Emailversand und FTP-Transfer erfolgt nicht aus Perl

Beitrag von LuMaReMa »

e-dschungel:

Danke für deine Antwort. Wenn ich das Script über den Browser aufrufe, stoppt es an der gleichen Stelle.
23.05.2022 02:03:26 Dumping table `esterelforum_statistics_domains` (Type MyISAM):
23.05.2022 02:03:26 259 inserted records (size of backupfile: 14.57 MB)
23.05.2022 02:03:26 Dumping table `esterelforum_statistics_online` (Type MyISAM):
Und in den Serverlogs gibt es keine Einträge. Für mich auch logisch, da ja der Dumper vor dem Mailversand und FTP-Transfer stoppt. Woher soll der Server von Allincl wissen, dass da was geplant ist? Und das Log des Dumpers gibt leider auch keinen Aufschluss. Es stoppt an der o.g. Zeile.

Und wenn ich die Funktion Perlscript testen aus dem Dumper benutze, kommt immer "You don't have permission to access this resource." Das könnte daran liegen, dass Allincl in den Basistarifen keine Cronjobs zulässt. Deshalb nutze ich den externen cronjobservice. Das hat bisher mit Mysqldumper funktioniert.

LG Ludger
e-dschungel
Beiträge: 28
Registriert: 01.02.2022, 20:58

Re: Emailversand und FTP-Transfer erfolgt nicht aus Perl

Beitrag von e-dschungel »

LuMaReMa hat geschrieben: 26.05.2022, 11:17 Und wenn ich die Funktion Perlscript testen aus dem Dumper benutze, kommt immer "You don't have permission to access this resource." Das könnte daran liegen, dass Allincl in den Basistarifen keine Cronjobs zulässt.
Nein, das hat nichts miteinander zu tun. Voraussetzungen für die Ausführung von Perlskripten bei All-Inkl siehe viewtopic.php?p=5615#p5615
Da crondump.pl funktioniert, sind wahrscheinlich bei perltest.pl die Rechte falsch gesetzt.

Gruß
e-dschungel
LuMaReMa
Beiträge: 8
Registriert: 22.05.2022, 10:30

Re: Emailversand und FTP-Transfer erfolgt nicht aus Perl

Beitrag von LuMaReMa »

Danke für den Tipp. Die Dateien simpletest.pl und perltest.pl werden ausgeführt und sagen alles ok.

Auch die Ausführung der crondump.pl startet. Aber das Backup stoppt immer noch an der gleichen Stelle wie zuvor geschrieben. Es kommt keine Fertig-Meldung.

Ich habe jetzt mal ein php-Backup laufen lassen. Dieses braucht total 49sec bis zur Fertigmeldung. Die Datenbank, an der Perl abbricht, wird bei ca. 30 sec gesichert. Da muss doch irgendwo eine Sperre sein, die nach 30 sec eintritt. Unter Statusinformation finde ich den Eintrag:
PHP-Version: 7.4.28 Speicher: 256.00 MB Maximale Ausführungszeit: 30 Sekunden

Da kommt mir wieder der Eintrag in den FAQ von cronjobservice.net in den Sinn, de ich schon weiter oben erwähnt hatte:
Wie lange werden die Skripte ausgeführt?
Jeder Cronjob wird maximal 30 Sekunden lang ausgeführt. Sollte ihr Skript nach 30 Sekunden aber noch nicht fertig sein, können Sie z.B. in PHP das Skript trotzdem weiterlaufen lassen. Dafür müssen Sie in Ihr PHP-Skript folgendes in die erste Zeile einfügen:

set_time_limit(0);
ignore_user_abort(true);

In anderen Programmiersprachen ist dies ähnlich. Schauen Sie dafür bitte in die entsprechende Dokumentation.
Die Frage ist: Wie bringt man den Dumper dazu, nicht nach 30 sec zu stoppen?

LG Ludger
e-dschungel
Beiträge: 28
Registriert: 01.02.2022, 20:58

Re: Emailversand und FTP-Transfer erfolgt nicht aus Perl

Beitrag von e-dschungel »

LuMaReMa hat geschrieben: 27.05.2022, 23:38 PHP-Version: 7.4.28 Speicher: 256.00 MB Maximale Ausführungszeit: 30 Sekunden
Das sind die Limits für PHP, die gelten nicht für Perl.
LuMaReMa hat geschrieben: 27.05.2022, 23:38 Die Frage ist: Wie bringt man den Dumper dazu, nicht nach 30 sec zu stoppen?
Ich glaube nicht, dass das hier das Problem ist.

Lässt sich eine andere größere Datenbank erfolgreich dumpen (Laufzeit >30s)?
LuMaReMa
Beiträge: 8
Registriert: 22.05.2022, 10:30

Re: Emailversand und FTP-Transfer erfolgt nicht aus Perl

Beitrag von LuMaReMa »

Muss mal schauen, welche Datenbank groß ist...

Habe jetzt zwischenzeitlich über die .user.ini die Ausführungszeit von php-Scripten auf 60 sec raufgesetzt. Hat leider - wie erwartet - nichts gebracht. Was mich wundert ist, dass in den Statusinformationen des Dumpers immer noch 30 sec bei php steht.....

Interessant wäre, ob bei anderen das Perl-Backup bei über 30 sec weiterläuft.

Ich habe zwischenzeitlich den MSD noch mal installiert. Obwohl ich früher mit dem nie Probleme hatte, bricht der jetzt auch nach 30 sec ab.

Anregung: Auf der Backup-Seite kann man ja per Button php-Backup ein Backup starten, was ja komplett durchläuft. Gäbe es evt. eine Möglichkeit, das Script, dass über diesen Button ausgelöste wird, zu automatisieren?

LG Ludger
LuMaReMa
Beiträge: 8
Registriert: 22.05.2022, 10:30

Re: Emailversand und FTP-Transfer erfolgt nicht aus Perl

Beitrag von LuMaReMa »

Nachdem eDschungel mir den Tipp mit der htaccess gegeben hat, funktionieren die Buttons in Perl.

Das Ergebnis von PERL-Test
If you see this perl works fine on your system !

Wenn Du das siehst, funktioniert Perl auf Deinem System !
Das Ergebnis von "PERL-Module testen"
Testing needed Perl-Moduls in order to run the Perl script crondump.pl
Necessary Modules for crondump.pl
testing DBI ... Found modul DBI. OK.
Found modul DBI::CSV
Found modul DBI::DBM
Found modul DBI::ExampleP
Found modul DBI::File
Found modul DBI::Gofer
Found modul DBI::Mem
Found modul DBI::Proxy
Found modul DBI::SQLite
Found modul DBI::Sponge
Found modul DBI::mysql
Found modul DBI::mysql. OK. crondump.pl can connect to MySQL-Database.

testing File::Find ... Found modul File::Find. OK.
testing File::Basename ... Found modul File::Basename. OK.
testing Getop... Found modul Getopt. OK. crondump.pl can read configfile-parameter from shell.
Configurable functions for crondump.pl (these moduls are only needed when explained option is turned on):
testing Compress::Zlib (needed for dumping data into a crompessed *.gz-file)...
Found modul Compress::Zlib ver 2.074. OK. crondump.pl can write compressed backups.

testing Net::FTP (needed if you want to transfer backups to another server)...
Found modul Net::FTP. OK - crondump.pl can send backups via FTP.

testing Net::FTPSSL (needed if you want to transfer backups to another server with ssl encryption)...
Found modul Net::FTPSSL. OK - crondump.pl can send backups via FTP with ssl encryption.

testing MIME::Lite (needed if you want to send backups via email)...
Found modul MIME::Lite. OK. crondump.pl can send emails.
Antworten