Frage zu Perl

JPPeterson

Registered User
Hallo,

wo ändere ich den timeout für Perlscripte ? Welche Datei ist dafür zuständig?

Zur Erklärung.Ich hab ein Perlscript für den MySQL Dumper der per Crontab meine DB sichert.Klappt auch ganz gut aber das script bricht wegen timeout nach einer gewissen zeit ab, folglich schafft er es nicht alle Tabellen zu backuppen
 
Last edited by a moderator:
Das script startet sich per cron als

Code:
perl /srv/www/vhosts/meinedomain/cgi-bin/test/crondump.pl config=mysqldumper.conf

Das Script bricht die Backupprozedur dann ab.Unter diesem Text die ausgabe aus dem log des Scripts

Code:
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * . dumping table `phpbb_search_wordmatch`
50738 inserted records (backupfile now 3377016 Bytes)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * . dumping table `phpbb_search_wordlist`
3 inserted records (backupfile now 2900185 Bytes)
. * . dumping table `phpbb_search_results`
15 inserted records (backupfile now 2899277 Bytes)
. * . dumping table `phpbb_ranks`
543 inserted records (backupfile now 2898618 Bytes)
. . . . . * . dumping table `phpbb_privmsgs_text`
543 inserted records (backupfile now 2781752 Bytes)
. . * . dumping table `phpbb_privmsgs`
11832 inserted records (backupfile now 2770350 Bytes)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * . dumping table `phpbb_posts_text`
11836 inserted records (backupfile now 172072 Bytes)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * . dumping table `phpbb_posts`
147 inserted records (backupfile now 7668 Bytes)
. * . dumping table `phpbb_groups`
12 inserted records (backupfile now 6624 Bytes)
. * . dumping table `phpbb_forums`
0 inserted records (backupfile now 4950 Bytes)
. * . dumping table `phpbb_forum_prune`
2 inserted records (backupfile now 4606 Bytes)
. * . dumping table `phpbb_disallow`
1 inserted records (backupfile now 4204 Bytes)
. * . dumping table `phpbb_confirm`
82 inserted records (backupfile now 3789 Bytes)
. * . dumping table `phpbb_config`
3 inserted records (backupfile now 2411 Bytes)
. * . dumping table `phpbb_categories`
0 inserted records (backupfile now 1964 Bytes)
. * . dumping table `phpbb_banlist`
10 inserted records (backupfile now 1613 Bytes)
. * . dumping table `phpbb_auth_access`
1 inserted records (backupfile now 1030 Bytes)
. * . dumping table `download` .
Start Perl Cron-Dump with file `XXXX_2006_12_31_22_38_crondump_perl.sql.gz`
found 34 tables with 437081 records.


34 tables were optimized
Backup Parameter: complete inserts

ok
MySQL-Version 4.1.13-standard
start Backup 31.12.2006 22:38
connect to database`XXX`
Start backup 1 of 3 with database `XXX`
backup 3 Databases ...
no file to delete.
Autodelete by Count (3) => found 0 Backups
Autodelete: search for more backups than 3 ... no file to delete.
Autodelete: search for backups older than 1 days ...
ok, logging on
Starting Crondump ... Mail Library loaded ...
FTP Library loaded ...
Compression Library loaded ...
Config 'mysqldumper.conf' was loaded.

MySQLDumper - Perl CronDump [Version 1.20]

Im Supportforum des Dumpers heißt es das es am Timeout von Perl liegt und ich meinem Hoster bescheid geben muss das er das Timeout anhebt.Da ich ja mein eigener Hoster bin :cool: such ich jetzt die .ini datei oder was es sonst da gibt die das timeout von Perl steuert
 
Auf der Shell aufgerufene Perl-Programme unterliegen keinen von außen bestimmten "Timeouts".
Das wäre ja ein Ding - bei so vielen Programmen und Daemons, die in Perl geschrieben sind. ;)

Du wirst also statt des "vermuteten Timeouts" nach einem "empirischen Beweis" für den Fehler suchen müssen, der das Script abbrechen lässt.

In deinem Log-Auszug sehe ich da jedenfalls schonmal nichts. Nur das Ende eines Laufes, der anscheinend erfolgreich war und den Beginn eines Laufes (31.12.2006 22:38), der vermutetermaßen nach der letzten Zeile wie der vorangegangene aussehen sollte.
 
Danke,werd dann mal ausschau halten.Du schreibst das es aber keinen Timeout gibt.
Welches Timeout sollte der Hoster/Ich denn eigentlich höher setzen? Was kann denn der support gemeint haben?
 
Ich denke, dem Vorschlag mit dem Timeout lag die Annahme zugrunde, dass du das Script per CGI-Aufruf startest.
Das passt auch damit zusammen, dass dein Hoster das Timeout erhöhen soll. Es wurde anscheinend angenommen, du hast keinen Shell-Access.

Wenn du Shell-Access hast, kannst du das Dumpen der Datenbanken auch mit mysqldump erledigen - oder einem kleinen Shell-Script drum herum.
 
Verstehe ich das also richtig das wenn ein script z.b. wie in diesem fall per cron über kommandozeile ausgeführt wird,das es dann kein timeout gibt? Außer wenn im script eins festgelegt wurde?
 
Verstehe ich das also richtig das wenn ein script z.b. wie in diesem fall per cron über kommandozeile ausgeführt wird,das es dann kein timeout gibt?
Japp. Der SSF-Bot im #ssf z.B. ist ein Perl-Programm und läuft Tage/Wochen durchgehend. Kein Timeout in Sicht. ;)
Es gibt auch einige "offizielle" Daemons, die in Perl geschrieben sind. Wäre ja schlimm, wenn die durch ein Timeout abgebrochen würden.

Perl ist eine Programmiersprache. Kein Runtime-Environment. Es gibt also kein externes Timeout.
 
Danke dir Elias für die Hilfe.Ein frage hätte ich da aber noch.
Gibts es eigentlich eine möglichkeit ein Perl Script global,also durch änderung in einer conf datei regeln vorzuschreiben was ein timeout angeht , Memory Size oder irgendwelcher anderen Parameter ?
Oder gibts für Perl keine Regeln solange sie nicht im Script verankert sind?
 
Oder gibts für Perl keine Regeln solange sie nicht im Script verankert sind?
Kannst du für beliebige andere Programme solche Regeln festlegen? Z.b. für ELF-Binaries? Soll ich es nochmal schreiben? Oder nochmal umformulieren?

Perl-Scripts verhalten sich wie alle anderen Programme auch. Wenn du ein Timeout haben willst, dann muss das Programm selbst dafür sorgen. Evtl. geht das sogar über den Shebang in der ersten Zeile. Aber das steht dann trotzdem im Programm selbst.

Aber es gibt _definitiv_ kein (in diesem Zusammenhang als "wirklich nicht" zu verstehen) globales, systemweites Timeout für Perl-Programme!!!!!11111hunterteinself

Wenn die Scripts vom Webserver aufgerufen werden, dann kann dieser dafür sorgen, dass sie einer Timeout unterworfen sind.
Aber wenn sie auf der Shell starten, dann gilt: Es gibt kein Timeout, außer das Programm sorgt selbst dafür.
 
Back
Top