Ausgabe per mail versenden

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Ausgabe per mail versenden

    Hallo

    Ich habe da ein kleines Problem bezüglich eines PHP scriptes. Besser gesagt ich bin unwissend in Bezug von PHP.
    Ich habe hier ein script welches alle Datenbanktabellen innerhalb meines MySQL Servers optimiert. Dies funktioniert auch wunderbar. Die Ausgabe ist ebenfalls korrekt, nur möchte ich diese jetzt direkt und in dieser form per mail versenden. Ich habe ja auf meinem Server die phpmailer ressourcen welche auch ebenfalls in der php.ini integriert ist.
    Hat jemand eine Idee wie ich die Ausgabe nach ablauf der Tabellenoptimierung direkt per mail versenden kann?

    Hier erst mal der Code:
    PHP-Code:
    <?php 
     
    echo '<pre>' "\n\n"
    set_time_limit100 );    
    $time microtime();   
    $time explode(' '$time);   
    $time $time[1] + $time[0];   
    $start $time;    
    //Mysqlconnection : 
    $h 'localhost'
    $u 'root'
    $p 'xxx';  
    $dummy_db 'mysql'
    /**/  
    $db_link mysql_connect($h,$u,$p);  
    $res mysql_db_query($dummy_db'SHOW DATABASES'$db_link)
    or die(
    'Could not connect: ' mysql_error());
    echo 
    'Optimierung aller DBs' "\n"
    echo 
    'Trouver 'mysql_num_rows$res ) . ' base des données' "\n"$dbs = array(); 
    while ( 
    $rec mysql_fetch_array($res) ) 
        { 
            
    $dbs [] = $rec [0]; }  foreach ( $dbs as $db_name 
            { 
                echo 
    "<tr> <td colspan=\"2\" style=\"font-weight:bold\">DB : <span style=\"color:blue\">$db_name</span>
    </td>
    </tr>\n"

    $res mysql_db_query
        
    ($dummy_db"SHOW TABLE STATUS FROM `" $db_name "`"$db_link) or die('Query : ' mysql_error()); 
    $to_optimize = array(); 
    while ( 
    $rec mysql_fetch_array($res) ) 
        { 
            if ( 
    $rec['Data_free'] > 
            { 
                
    $to_optimize [] = $rec['Name']; 
                echo 
    $rec['Name'] . "<tr> <td colspan=\"2\" style=\"font-weight:bold\"><span style=\"color:green\">wurde optimiert</span> </td></tr>\n"
            } 
        }
    if ( 
    count $to_optimize ) > 
        { 
            foreach ( 
    $to_optimize as $tbl 
        { 
      
    mysql_db_query($db_name"OPTIMIZE TABLE `" $tbl ."`"$db_link ); 
                } 
            } 
        }
    $time microtime();   
    $time explode(' '$time);   
    $time $time[1] + $time[0];   
    $finish $time;   
    $total_time round(($finish $start), 6);  
     echo 
    'Parsed in ' $total_time ' secs' "\n\n"
    ?>

    Hat jemand eine Idee. Ich bitte um Hilfe.

    Vielen Dank

    Chris
    Zuletzt geändert von achillix; 23.07.2008, 10:50.

  • #2
    bei dem code sieht doch keiner durch. bitte erstmal ordentlich formatieren
    it's not a bug,
    it's a feature!

    Kommentar


    • #3
      Ist es so besser?
      Sorry wegen dem gewirr, aber das Textfeld des editors hier ist ziemlich klein.

      Kommentar


      • #4
        du solltest den code auch entsprechend einrücken. so kann doch keiner was erkennen.

        peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          Original geschrieben von Kropff
          du solltest den code auch entsprechend einrücken. so kann doch keiner was erkennen.

          peter
          und jetzt

          Kommentar


          • #6
            Du willst dich mit dem Output Buffer befassen.
            [FONT="Helvetica"]twitter.com/unset[/FONT]

            Shitstorm Podcast – Wöchentliches Auskotzen

            Kommentar


            • #7
              Jep, das heisst, alles was er im end effekt ausgibt befindet sich zu diesem Zeitpunkt im Output Buffer, da ja keine Datei in diesem Sinne erzeugt wird.

              Kommentar


              • #8
                So kurz über den Daumen gepeilt, könnte das etwa so aussehen
                PHP-Code:
                <?php 
                set_time_limit
                (100);    
                $time microtime(true); 
                $start $time;    
                //Mysqlconnection : 
                $h 'localhost'
                $u 'root'
                $p 'xxx';  
                $dummy_db 'mysql'
                /**/  
                $msg "DB Optimierung\n\n";
                $db_link mysql_connect($h$u$p) or die("Cannot connect do server");  
                mysql_select_db($dummy_db) or die("Cannot select the DB");
                $msg .= "DB : $dummy_db\n"
                $sql "SHOW TABLE STATUS FROM $db_name";
                $res mysql_query($sql) or die('Query : ' mysql_error()); 
                while (
                $rec mysql_fetch_array($res)){ 
                    if (
                $rec['Data_free'] > 0){ 
                        
                $tbl $rec['Name']; 
                        
                $sql "OPTIMIZE TABLE $tbl";
                        
                mysql_db_query($sql) or die(mysql_error()); 
                           
                $msg .= sprintf("%30s wurde optimiert\n"$rec['Name']); 
                    } 
                }
                $time microtime(true);   
                $finish $time;   
                $total_time round(($finish $start), 6);  
                $msg .= "Parsed in $total_time secs\n\n"
                echo 
                nl2br($msg);
                $empf 'empfaenger@mail.com';
                $betreff "Optimierungsstatistik";
                mail($empf$betreff$msg);
                ?>
                Zuletzt geändert von H2O; 23.07.2008, 11:51.
                Gruss
                H2O

                Kommentar


                • #9
                  Mit dem Output Buffer muss er exakt zwei Zeilen seinem bisherigen Script hinzufügen und gut ist.
                  [FONT="Helvetica"]twitter.com/unset[/FONT]

                  Shitstorm Podcast – Wöchentliches Auskotzen

                  Kommentar


                  • #10
                    Original geschrieben von H2O
                    So kurz über den Daumen gepeilt, könnte das etwa so aussehen
                    PHP-Code:
                    <?php 
                    set_time_limit
                    (100);    
                    $time microtime(true); 
                    $start $time;    
                    //Mysqlconnection : 
                    $h 'localhost'
                    $u 'root'
                    $p 'xxx';  
                    $dummy_db 'mysql'
                    /**/  
                    $msg "DB Optimierung\n\n";
                    $db_link mysql_connect($h$u$p) or die("Cannot connect do server");  
                    mysql_select_db($dummy_db) or die("Cannot select the DB");
                    while (
                    $rec mysql_fetch_array($res)){ 
                        
                    $dbname $rec[0]; 
                        
                    $msg .= "DB : $db_name\n"
                        
                    $sql "SHOW TABLE STATUS FROM $db_name";
                        
                    $res mysql_query($sql) or die('Query : ' mysql_error()); 
                        while (
                    $rec mysql_fetch_array($res)){ 
                            if (
                    $rec['Data_free'] > 0){ 
                                
                    $tbl $rec['Name']; 
                                
                    $sql "OPTIMIZE TABLE $tbl";
                                
                    mysql_db_query($sql) or die(mysql_error()); 
                                
                    $msg .= sprintf("%30s wurde optimiert\n"$rec['Name']); 
                            } 
                        }
                    }
                    $time microtime(true);   
                    $finish $time;   
                    $total_time round(($finish $start), 6);  
                    $msg .= "Parsed in $total_time secs\n\n"
                    echo 
                    nl2br($msg);
                    $empf 'empfaenger@mail.com';
                    $betreff "Optimierungsstatistik";
                    mail($empf$betreff$msg);
                    ?>
                    Wow, das ging aber schnell, werd eich sofort testen und mich gleich melden

                    danke

                    Kommentar


                    • #11
                      Habs nochmals geändert!
                      Gruss
                      H2O

                      Kommentar


                      • #12
                        Sorry, war ebend noch was essen, daher erst so spät meine Antwort.
                        Hab es getestet und siehe da, die mail kommt an. Hat aufjedenfall funktioniert.
                        Nur leider zeigt er mir die Sattistik nicht an. Ich bekomme nur dies als resultat:

                        Code:
                        DB Optimierung
                        
                        Parsed in 0.001418 secs
                        Wie kann ich da noch die Statistiken sichtbar bekommen?

                        Vielen Dank

                        gruss

                        Kommentar


                        • #13
                          OffTopic:

                          Nach dem Essen kommt die Sattistik


                          Da wurden halt keine Tabellen wirklich optimiert. Falls du über all eine Meldung haben willst (wie du es vorher hattest), dann musst du das Schreiben der Meldung vor die IF-Abfrage stellen:
                          PHP-Code:
                          ...
                          while (
                          $rec mysql_fetch_array($res)){ 
                              
                          $msg .= sprintf("%30s wurde optimiert\n"$rec['Name']); 
                              if (
                          $rec['Data_free'] > 0){ 
                                  
                          $tbl $rec['Name']; 
                                  
                          $sql "OPTIMIZE TABLE $tbl";
                                  
                          mysql_db_query($sql) or die(mysql_error()); 
                              } 
                          }
                          ... 
                          Gruss
                          H2O

                          Kommentar


                          • #14
                            Nein leider immer noch die selbe Meldung. Natürlich hat das script jetzt nichts optimieren können, da ich das script nun wohl schon 15 mal gestartet habe
                            Dennoch bleibt das Resultat das selbe.
                            Es bringt halt keine db_list mehr.

                            Habe ich vielleicht was übersehen?

                            Kommentar


                            • #15
                              Das kann man dir nicht sagen, wenn du den aktuellen Code nicht postest...

                              Kommentar

                              Lädt...
                              X