• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

serverseitig zippen

antiheld2000

New member
Hi,

ich habe hier ein kleines System, auf dem per Cronjob CSV-Dateien erstellt werden. Diese sollen dann gezippt und per Passwort geschützt, danach per E-Mail versendet und gelöscht werden. So, wie es bisher eingerichtet ist, funktioniert ständig irgendetwas nicht. Es sind schon diverse Fehler aufgetreten: ZIP-Datei leer, Passwort nicht gesetzt, man weiß es nicht. Wie würdet Ihr so eine Sache umsetzen? Gibt es da bessere Lösungen?

Hier der bisherige Code (in Kurzfassung):
PHP:
if( count( $adminrows ) > 0 )
    {
    
    $csvfile = "temp/".date("Y-m-d-").'edited.csv';
    $handle = fopen( $csvfile , "a+");
  
    $csvcontent = ''; 
    foreach( $adminrows as $user )
    {
      
      foreach( $user as $key => $value )
          $csvcontent .= "'$value';";
          
      $csvcontent .= "\n";
    }
    fwrite( $handle , $csvcontent );
    fclose( $handle );
    
    $pass = getpass();
    $zipfile = date("Y-m-d-") . 'edited.zip';
    
    exec("zip -P $pass $zipfile \"$csvfile\"",$ret);
    
    @unlink($csvfile);
    
    // Hier die Texte für die E-Mails
    $textdatei = '<p>Hallo, <br />anbei finden Sie alle geänderten Daten.</p>';
    $textpassw = '<p>Hallo, <br />das Passwort für die vorgehende Datei lautet: ' . $pass . ' .</p>';
    
   
    // Hier werden E-Mails verschickt
    sendMail(EMAIL_ADRESSE,'',$attachment,'Geänderte Daten: Datei',$textdatei,'FILE',false,$zipfile);
    sendMail(EMAIL_ADRESSE,'',$attachment,'Geänderte Daten: Passwort',$textpassw,'PASSWORD');

	@unlink($zipfile);
  }
 
Wie würdet Ihr so eine Sache umsetzen?
Nicht in PHP. Du hast schon ein Shellskript, welches die Daten generiert und per CronJob aufgerufen wird. Wäre es da nicht wesentlich besser ein zweites Shellskript zu schreiben, welches vom ersten aufgerufen wird und die Arbeit erledigt?
Wenn man das erste Skript nicht mehr anfassen will (ala never change a running system) schreibt man sich notfalls ein Wrapper-Skript, welches beide nacheinander aufruft (unter Berücksichtigung etwaiger Rückgabewerte der Skripte).
 
Also der Cronjob ruft eine PHP-Datei auf, welche alles erledigt. Warum sollte ich dies denn nicht in PHP tun? Muss doch eigentlich auch funktionieren, oder?
 
erstmal rausbekommen, was genau den Fehler veruracht. Dazu mal mitloggen was passiert und wo was schieft geht. Da du es als Cronjob laufen läßt, solltest du das auch als Cronjob testen, also am besten in eine Datei loggen.
 
Zurück
Oben