Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Hilfe bei Geschwindgkeit

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Hilfe bei Geschwindgkeit

    Hallo zusammen,
    meine Seite ist www.ndbw.de

    Dort suche ich über ein PHP-Script sämtliche Börsen- und Wirtschaftsnachrichten (momentan 52 Quellen).

    Wie kann man die Geschwindigkeit erhöhen?


  • #2
    wenn das Werbung für deine Seite ist, dann bitte in das Werbeforum verschieben.
    Ansonsten, kann ich nur sagen, dass meine Glasskugel schon Feierabend hat, und ich deinen Quellcode so schlecht ohne sie lesen kann.

    Und wenn du im Fortgeschrittenen Forum Postest, solltest du schon wissen wie man das macht.
    Gruß JEGO

    Ein PHP Script tut, was Du schreibst, nicht was Du willst.

    Kommentar


    • #3
      Code:
      <?
      #  magpie einbinden
      require_once('rss_fetch.inc');
      #require_once('../../magpie/rss_fetch.inc');
      #require_once('magpie/rss_fetch.inc');
      
      
      
      # DB FUNKTIONEN
      # DB FUNKTIONEN
      # DB FUNKTIONEN
      
      
      
      	  // Insert ~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*
            // Insert ~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*
            // Insert ~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*
            function Insert($Table, $Data, $GetLastID) {
            // fügt einen Datensatz in eine Tabelle ein
      
      		// Configvariabeln holen
               $Server = '*******';
               $User = '**********';
               $Pass = '**********';
               $DB = '*********';
      
      
               // DBVerbindung herstellen
               $Conn = mysql_connect($Server, $User, $Pass)
                     or die("Konnte keine Verbindung zur Datenbank herstellen.");
      
               $Conn = $Conn;
      
               // DB auswählen
               $use = "use `$DB`";
                mysql_query($use, $Conn) or die('Konnte DB nicht auswählen.' . mysql_errno($Conn) . ": " . mysql_error($Conn));
      
      
               // das Hash Data richtig aufsplitten
               $Spalten = '';
               $Werte = '';
               while (list($Spalte, $Wert) = each($Data)) {
      
                     if (strlen($Spalten)) {
                        $Spalten .= ", `$Spalte`";
                     } else {
                        $Spalten .= "`$Spalte`";
                     }
      
                     if (strlen($Werte)) {
                        $Komma = ", ";
                     } else {
                        $Komma .= "";
                     }
      
                     # MYSQL-Funktionen beachten
                     if ($Wert == 'NOW()') {
                        $Werte .= "$Komma $Wert";
                     } else {
                        $Wert  = addslashes($Wert);
                        $Werte .= "$Komma '$Wert'";
                     }
      
      
               }
      
               // SQL-Anweisung erstellen
               $SQL = "INSERT INTO `$Table` ($Spalten) VALUES ($Werte)";
      
      
               // Anweisung ausführen lassen
               mysql_query($SQL, $Conn)
                                  or die("Database: Konnte Daten leider nicht einfügen. 
      
                                  " . mysql_errno($Conn) . ": " . mysql_error($Conn));
      
      
      
               // soll die ID des letzten Datensatzes zurückgegeben werden?
               if ($GetLastID) {
                  return mysql_insert_id();
      
               } else {
                  return 1;
               }
      
      
            }
      
      
      	  // Select ~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*
            // Select ~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*
            // Select ~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*
            function Select($Spalten, $Table, $Where) {
      
      
      			// Configvariabeln holen
            $Server = '*******';
               $User = '*******';
               $Pass = '***********';
               $DB = '***********';
      
               // DBVerbindung herstellen
               $Conn = mysql_connect($Server, $User, $Pass)
                     or die("Konnte keine Verbindung zur Datenbank herstellen.");
      
               $Conn = $Conn;
      
               // DB auswählen
               $use = "use `$DB`";
               mysql_query($use, $Conn) or die('Konnte DB nicht auswählen.' . mysql_errno($Conn) . ": " . mysql_error($Conn));
      
      
                     // Daten validieren: kein ; enthalten
                     $Spalten = preg_replace(
                              "/;/",
                              "",
                              $Spalten
                     );
      
                     $Table = preg_replace(
                              "/;/",
                              "",
                              $Table
                     );
      
                     $Where = preg_replace(
                              "/;/",
                              "",
                              $Where
                     );
      
      
      
                     if (preg_match("/,/", $Table)) {
      
      
                     $Tables = split(",", $Table);
                     foreach ($Tables AS $Wert) {
      
                             # leerzeichen entfernen
      
                             $Wert2 = preg_replace(
                                    "/^[\W]+/",
                                    "",
                                    $Wert
                             );
      
      
                             $a = $Praefix.$Wert2;
      
      
                             if ($FinalTable) {
                                $FinalTable .= ", $a";
                             } else {
                                $FinalTable = $a;
                             }
      
                     }
      
                     } else {
                           $FinalTable = $Praefix.$Table;
                     }
      
                     $SQL = "SELECT $Spalten FROM $FinalTable  $Join WHERE $Where";
                     $Daten = mysql_query($SQL, $Conn)
                                  or die("Konnte Daten leider nicht auswählen. 
      SQL: $SQL 
      
                                  " . mysql_errno($Conn) . ": " . mysql_error($Conn));
      
                     // Rückgabearray erstellen
                     $Rueckgabe;
                     $i = 0;
                     while($Row =  mysql_fetch_array($Daten)) {
      
                                $Spalte = split(",", $Spalten);
                                $j = 0;
      
                                foreach ($Spalte as $SpaltenName) {
      
                                        // Daten ins Array packen
                                        $Rueckgabe[$i][$j] = $Row[$j];
      
                                        $j++;
                                }
      
                                $i++;
                     }
      
                     // Wieviele Datensätze sind betroffen?
                     $Howmany = mysql_num_rows($Daten);
      
                     return array($Howmany, $Rueckgabe);
            }
      
      
            // Select_Single ~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*
            // Select_Single ~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*
            // Select_Single ~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*
            function Select_Single($Spalten, $Table, $Where) {
      
      		// Configvariabeln holen
             $Server = '**********';
               $User = '************';
               $Pass = '*********';
               $DB = '****************+';
      
               // DBVerbindung herstellen
               $Conn = mysql_connect($Server, $User, $Pass)
                     or die("Konnte keine Verbindung zur Datenbank herstellen.");
      
               $Conn = $Conn;
      
               // DB auswählen
               $use = "use `$DB`";
                mysql_query($use, $Conn) or die('Konnte DB nicht auswählen.' . mysql_errno($Conn) . ": " . mysql_error($Conn));
      
      
                     // SQL-Anweisung
                     if (preg_match("/,/", $Table)) {
      
                     $Tables = split(",", $Table);
                     foreach ($Tables AS $Wert) {
      
      
                             # erste leerzeichen entfernen
                             $Wert = preg_replace(
                                   "/^[ ]+/",
                                   "",
                                   $Wert
                             );
      
                             $a = $Wert;
      
                             if ($FinalTable) {
                                $FinalTable .= ", $a";
                             } else {
                                $FinalTable = $a;
                             }
      
                     }
      
                     } else {
                           $FinalTable = $Table;
                     }
      
                     $SQL = "SELECT $Spalten FROM $FinalTable WHERE $Where";
                     $Daten = mysql_query($SQL, $Conn)
                                  or die("Konnte Daten leider nicht auswählen. 
      SQL: $SQL
      
                                  " . mysql_errno($Conn) . ": " . mysql_error($Conn));
      
                     // Rückgabearray erstellen
                     $Rueckgabe = array();
                     while($Row =  mysql_fetch_array($Daten)) {
      
                                $Spalte = split(",", $Spalten);
                                $i = 0;
                                foreach ($Spalte as $SpaltenName) {
      
                                        // Spaltenname von Leerzeichen bereinigen
                                        $SpaltenName = preg_replace("/( )+|\t|\r|\n/", "", $SpaltenName);
      
                                        // Daten ins Array packen
                                        #$Rueckgabe[$i] = $Row[$SpaltenName];
                                        $Rueckgabe[$i] = $Row[$i];
                                        $i++;
                                }
      
                     }
      
                     // Wieviele Datensätze sind betroffen?
                     $Howmany = mysql_num_rows($Daten);
      
                     if ($Howmany > 1) {
                        die("Select_Single betrifft mehr als einen Datensatz!");
                     }
      
                     return $Rueckgabe;
            }
      
      
      	  // Delete ~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*
            // Delete ~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*
            // Delete ~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*
            function Delete($Table, $Where) {
      
      		// Configvariabeln holen
             $Server = '**********';
               $User = '*********';
               $Pass = '**********';
               $DB = '****************';
      
      
               // DBVerbindung herstellen
               $Conn = mysql_connect($Server, $User, $Pass)
                     or die("Konnte keine Verbindung zur Datenbank herstellen.");
      
               $Conn = $Conn;
      
               // DB auswählen
               $use = "use `$DB`";
               mysql_query($use, $Conn) or die('Konnte DB nicht auswählen.');
      
      
                     // SQL-Anweisung
                     $SQL = "DELETE FROM `$Table` WHERE $Where";
      
                     mysql_query($SQL, $Conn)
                                  or die("Konnte Daten leider nicht löschen.
                                  " . mysql_errno($Conn) . ": " . mysql_error($Conn));
      
      
                     return array(1);
            }
      
      
      
      
      
      
      
      
      
      # QUELLEN LESEN
      # QUELLEN LESEN
      # QUELLEN LESEN
      
      		// ReadSource ~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*
      		// ReadSource ~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*
      		// ReadSource ~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*
      		function ReadSource() {
      		# Die Textdatei auslesen und daraus die Quellen ermitteln. Die Quellen als Array zurückgeben
      
      			// öffne die Datei
      			$Datei = fopen("Quellen.txt","r");
      
      			// zeilenweise auslesen
      			$Array;
      			$AnzahlQuellen = 0;
      
      			while ($Zeile = fgets($Datei, 1000)) {
      
      				# leerzeichen am anfang entfernen
      				$Zeile = preg_replace(
                            "/^[ ]+/",
                            "",
                            $Zeile
      				);
      
      
      				# wenn inhalt, also zeile mit buchstaben anfängt
      				if (preg_match('/^[A-Za-z]/', $Zeile)) {
      
      					# wenn es nicht mit http:// oder feed ://anfängt, also keine Quelle ist
      					if ((!preg_match('/^http:\/\//', $Zeile)) and (!preg_match('/^feed:\/\//', $Zeile))) {
      
      						list($Name, $URL) = split('§', $Zeile);
      
      						# leerzeichen entfernen
      						$Name = preg_replace('/[ ]+|\t|\r|\n/', '' , $Name);
      						$URL = preg_replace('/[ ]+|\t|\r|\n/', '' , $URL);
      
      						$Name2 = preg_replace('/[^a-zA-Z]/', '', $Name);
      						$Name2 = substr($Name2, 0, 4);
      
      						$i = 0;
      
      
      
      
      					} else {
      						# ins array schreiben
      						$i++;
      						# leerzeichen entfernen
      						$Zeile = preg_replace('/[ ]|\t|\r|\n/', '' , $Zeile);
      						$Array["$Name2-$i"] = $Zeile."§".$Name."§".$URL;
      						$AnzahlQuellen++;
      
      
      					}
      				}
                  }
      
      
      			// schließe Datei
      			fclose($Datei);
      			return array($Array, $AnzahlQuellen);
      		}
      
      
      
      
      
      
      
      # RSS FUNKTIONEN
      # RSS FUNKTIONEN
      # RSS FUNKTIONEN
      		function GetContent($Quelle, $Name, $URL, $key){
      		# liest die Quelle aus
      
      			# maximal 4 nachrichten pro quelle
      			$i = 0;
      			$Ausgabe = array();
      			$rss = fetch_rss("$Quelle");
      
      
      			$Name2 = substr($Name, 0, 3);
      
      			if ($rss) {
      			foreach ($rss->items as $item) {
      
      				if ($i > 3)
      					break;
      
      				$i++;
      
      				# daten holen
      				$title = $item[title];
      				$link  = $item[link];
      				$date  = $item[pubdate];
      
      
      
      
      				if ($date) {
      
      					$UnixTimestamp = strtotime($date);
      
      					# in timestamp umwandeln
      					$Timestamp = date('YmdHis', $UnixTimestamp);
      
      
      				# wenn nicht angegeben, dann mit DB arbeiten
      				} else {
      
      
      					# existiert dieser link schon in der DB?
      					list($Timestamp) = Select_Single(
      						'timestamp',
      						'ndbw',
      						"link = '$link'"
      					);
      
      					# wenn nicht vorhanden, dann einfügen
      					if (!$Timestamp) {
      
      					    $Timestamp = date('YmdHis');
      						Insert(
      							'ndbw',
      							array(
      								timestamp => $Timestamp,
      								link	  => $link,
      							), 0
      						);
      					}
      
      
      				}
      
      				# zeitangaben aus timestamp nehmen
      				$Timestamp = preg_replace('/[^0-9]/', '', $Timestamp);
      				$Jahr = substr($Timestamp, 0, 4);
      				$Monat = substr($Timestamp, 4, 2);
      				$Tag = substr($Timestamp, 6, 2);
      				$Stunde = substr($Timestamp, 8, 2);
      				$Minute = substr($Timestamp, 10, 2);
      
      				# welcher tag ist heute?
      				$HeuteTag = date('d');
      				$HeuteMonat = date('m');
      				$HeuteJahr = date('Y');
      
      				# nur einfügen, wenn nachricht von heute
      				if (($HeuteTag == $Tag) and ($HeuteMonat == $Monat) and ($HeuteJahr == $Jahr)) {
      
      					$Ausgabe["$Timestamp-$key-$i"] = array(
      						jahr	=> $Jahr,
      						monat	=> $Monat,
      						tag		=> $Tag,
      						stunde	=> $Stunde,
      						minute	=> $Minute,
      						url		=> $URL,
      						name	=> $Name,
      						link	=> $link,
      						title	=> $title,
      						fehler	=> 0,
      					);
      
      				}
      			}
      
      			#wenn fehler
      			} else {
      				$Ausgabe["0000-$key-$i"] = array(
      						url		=> $URL,
      						name	=> $Name,
      						fehler	=> 1,
      				);
      
      			}
      
      			return $Ausgabe;
      
      
      		};
      
      
      
      		# MAKEVAILD
      		# MAKEVAILD
      		#  MAKEVAILD
      		function MakeValid($String){
      		// string xhtml valid machen
      
      			$String = htmlentities($String);
      			$String = preg_replace('/–/', '-', $String);
      			return $String;
      
      		}
      
      
      
      
      
      
      # Hauptteil
      # Hauptteil
      # Hauptteil
      
      
      	# db inhalten älter als 7 tage löschen
      	$Timestamp = date('YmdHis');
      
      
      	Delete(
      		'ndbw',
      		"TO_DAYS(NOW()) - TO_DAYS(timestamp) >= 2"
      	);
      
      	# die Quellen lesen
      	list($Quellen, $AnzahlQuellen) = ReadSource();
      
      	# array durchgehen und content nehmen
      	$Content = array();
      	$i = 0;
      	while (list ($key, $CurrentQuelle) = each ($Quellen)) {
      
      			#CurrentQuelle zerlegen
      			list($Quelle, $Name, $URL) = split('§', $CurrentQuelle);
      			$Ausgabe = GetContent($Quelle, $Name, $URL, $key);
      			$Content = array_merge($Ausgabe, $Content);
      	}
      
      
      	# array content nach keys sortieren
      	krsort ($Content);
      	reset ($Content);
      
      
      
      	# ausgeben
      	$Tag = date('d');
      	$Monat = date('m');
      	$Jahr = date('Y');
      
      	#wie viele nachrichte?
      	$Anzahl = count($Content);
      
      	echo "<div id=\"Header\">Heute ist der $Tag.$Monat.$Jahr - Wir haben bisher $Anzahl Nachrichten von $AnzahlQuellen Quellen gefunden.</div>";
      
      
      
      
      	foreach ($Content AS $Array) {
      
      		$URL = MakeValid($Array[url]);
      		$Link = MakeValid($Array[link]);
      		$Title = MakeValid($Array[title]);
      		$Name = MakeValid($Array[name]);
      
      		if ($Array[fehler] == '1') {
      			echo "
      
      			";
      		} else {
      			echo "
      				$Array[stunde]:$Array[minute] Uhr - $Name:
      				$Title... mehr
      				
      
      
      			";
      		}
      
      	}
      
      
      ?>

      Kommentar


      • #4
        Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'dbu1018180'@'localhost' (using password: YES) in /is/htdocs/wp1018180_DYXPURNTDR/www/index2.php on line 293
        Konnte keine Verbindung zur Datenbank herstellen.

        Kommentar


        • #5
          Seite läuft wieder. Kann mir jemand Verbesserungen für das Script geben?

          Kommentar


          • #6
            mysql_connect() und mysql_select_db() sollte nur ein einziges mal am anfang des skripts stehen. und solange du eh nur eine datenbank im skript hast, brauchst du das database-handle gar nicht mehr mit- bzw. weitergeben.

            mysql_query($sqlStatement) or die($sqlStatement . ' --- ' . mysql_error() );

            lautet dann die anweisung für eine anfrage.

            Kommentar


            • #7
              wie wärs mit ner caching-engine ?

              und die seite so 5 minuten oder länger zwischenspeichern ? damit werden die ganzen sachen nicht immer gemacht.

              mfg
              robo47
              robo47.net - Blog, Codeschnipsel und mehr
              | Caching-Klassen und Opcode Caches in php | Robo47 Components - PHP Library extending Zend Framework

              Kommentar


              • #8
                Dann fehlt die Aktualität. Und nur einmal configvariablen holen bringt auch nichts.

                Mir fällt nichts mehr ein. Umso mehr Quellen ich verwende, desto länger ist die Seitenaufbauzeit.

                Kommentar


                • #9
                  ich denke 30 sekunden oder vieleicht auch ein bißchen mehr sollten ohne probleme drin sein davon abgesehen, das was shon da ist immer statisch cachen nur neue sachen in html-form erstellen ?
                  robo47.net - Blog, Codeschnipsel und mehr
                  | Caching-Klassen und Opcode Caches in php | Robo47 Components - PHP Library extending Zend Framework

                  Kommentar

                  Lädt...
                  X