statt AJAX/js clientseitig => php serverseitig

Ja das mag sein, es hat aber nur interne Verwendung. Danke für den Hinweis.
 
Zuletzt bearbeitet:
Wenn du jetzt alle Sicherheitsbedenken und verbesserungen zur Seite legst und das Script ja auch nicht in der Öffentlichkeit erreichbar ist , könntest du doch mal nee Schleife rumlegen.
Wenn das da oben deine wow.php ist würde ich das so versuchen.
PHP:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<?php
error_reporting(0);
$host = "localhost";
$port = "3306";
$username = "";
$password = "";
$dbname = "";
$idstart=0;//Start id
$idende=10;// Ende id
$pdo = new PDO("mysql:host=$host;port=$port;dbname=$dbname", "$username", "$password");

for($id=$idstart;$id<=$idende;$id++){
   $statement = $pdo->prepare(" SELECT * FROM server13_websites WHERE id = $id ");
   $statement->execute();
   $result = $statement->fetchAll();
   foreach ($result as $row) {
      echo $row["id"]."<br />".$row["url"]."<br /><br />";
   }
   $urlwow = $row["url"];
   $quelltext = file_get_contents($urlwow);
   //echo $quelltext;
   echo "<hr></hr>";
   $tags = get_meta_tags($urlwow);
   //echo $tags['keywords'];
   echo "<hr></hr>";
   //echo $tags['description'];
   echo "<hr></hr>";
   $wow_a = file_get_html($urlwow);
   foreach($wow_a->find('a') as $element1){
          //echo $element1->href.'<br />';
  }
  //usw.
  //usw. Prüfungen und Änderungen
  //usw.
  $sql = "INSERT INTO server13_wesites_new (url,quelltext,keywords,description,links) VALUES ('$url','$quelltext','$keywords','$description','$links')";
  $result = $connection->query($sql);
}
$connection->close();
?>
</body>
</html>
Währe jetzt meine Idee.
Andere Idee währe deine Datenbank Code zu ändern ( zb WHERE id<3000 ) dann mit schleife weiter usw..

Warte aber erstmal was die anderen sagen bevor du da irgendwelche versuche machst
 
Ich versuch mal die Schleife und meld mich. Danke Basti. Dein obiges cron-Script könnte ich zum Anstossen nutzen??? Vllt. kannst Du dazu noch Tipps geben wie ich denn tageweise ev. auch bestimmte Uhrzeiten berücksichtigen könnte. Hatte mal was mit H:i:s probiert aber bisher fehlgeschlagen. Danke vorab.
 
Cronjobs sind kein Problem, Dein cron-script funktioniert auch bei mir. Dass mit der Schleife leuchtet mir jedoch nicht ein.
$idstart=0;// Start id
$idende=10;// Ende id
for($id=$idstart;$id<=$idende;$id++){
}
Ich weiß zwar was grundlegend gemeint ist, aber es gibt keinen Ansatz wie die id's nacheinander in Zeitabständen aufgerufen werden. In der clientseitigen AJAX-Scriptversion gibt es dazu ja die settimeout-Funktion.
 
setinterval gibt es da nicht.
Brauchst du das den ?
So wie es jetzt ist rufst du wow.php im Browser auf und er läuft von id 1 bis id 10 durch.
Das wird nicht mal eine Sekunde dauern.

Wenn du aber ein setinterval brauchst und jedes Ergebniss erst sehen willst ( wie im ersten Beitrag ) bevor die nächste Id aufgerufen wird , wird das wohl so nicht gehen weil Php keinen setInterval hat oder setTimeout
 
Aber Du weisst schon, dass es einer gewissen Zeitspanne bedarf bis all die Funktionen bis zum INSERT abgearbeitet wurden. Insofern hast Du recht wenn es nur Millisekunden dauert bis die Schleife durch ist, das führt aber nicht dazu dass INSERT vollständig für jeden Datensatz abgearbeitet wird.
Ich brauche irgendwie mindestens drei Sekunden pro Datensatz. Deshalb dachte ich ja es wäre mit Cronjobs möglich. Ist es aber wohl nicht. Eine Möglichkeit wäre noch das AJAX/js von Dir in node.js zu packen. Ich kläre gerade ob wir node.js auf dem Server laufen haben oder wie es da drauf kommt.

Ich hab die Schleife mal besser in eine eigene php gepackt, es wurde zu unübersichtlich. Das was ich nun händisch per Klick alle drei Sekunden auf "los" machen könnte soll eben automatisch auf dem Server erfolgen.
PHP:
<?php
error_reporting(0);

$idstart=1;
$idende=10;

for($id=$idstart;$id<=$idende;$id++){

echo "<form method=\"POST\" action=\"wow.php\">";
echo "<input type=\"text\" name=\"id\" value=\"$id\">";
echo "<input type=\"submit\" value=\"los\">";
echo "</form>";

}
?>
</body>
</html>
 
Zuletzt bearbeitet:
Ich glaube jetzt brauch es einen Php Profi weil ich kann das nicht erklären.

Ich denke das es so wäre.
In der for Scheleife wird in der Datenbank nach id 1 gesucht und ausgegeben.
Durchläuft deine functionen und danach wird INSERT ausgeführt.
Dann geht die Schleife weiter mit ID 2.

Mach die for Schleife weg und rufe eine Function auf die die Id immer ein höher macht wenn INSERT Positiv wahr
Irgendwie so
PHP:
<?php
error_reporting(0);
$host = "localhost";
$port = "3306";
$username = "";
$password = "";
$dbname = "";
$idstart=0;//Start id
$idende=10;// Ende id
$pdo = new PDO("mysql:host=$host;port=$port;dbname=$dbname", "$username", "$password");

function lauf($idstart,$idende){
   if($idstart<$idende){
        $statement = $pdo->prepare(" SELECT * FROM server13_websites WHERE id = $idstart");
        $statement->execute();
        $result = $statement->fetchAll();
        foreach ($result as $row) {
           echo $row["id"]."<br />".$row["url"]."<br /><br />";
        }
        $urlwow = $row["url"];
        $quelltext = file_get_contents($urlwow);
        //echo $quelltext;
        echo "<hr></hr>";
        $tags = get_meta_tags($urlwow);
        //echo $tags['keywords'];
        echo "<hr></hr>";
        //echo $tags['description'];
        echo "<hr></hr>";
        $wow_a = file_get_html($urlwow);
        foreach($wow_a->find('a') as $element1){
               //echo $element1->href.'<br />';
        }
        //usw.
        //usw. Prüfungen und Änderungen
        //usw.
        $sql = "INSERT INTO server13_wesites_new (url,quelltext,keywords,description,links) VALUES ('$url','$quelltext','$keywords','$description','$links')";
        $result = $connection->query($sql);
        if($result){
            $idstart++;
            lauf($idstart,$idende)
        }
    }else{
       echo "Fertig : Von $idstart bis $idende durchgelaufen";
   }
}
lauf($idstart,$idende)
$connection->close();
?>
Ich würde es so versuchen.
Ich halte mich jetzt hier raus.
Hoffe das sich jetzt einer von den Php Profis einschaltet der dir das besser erklären ,bzw zeigen kann.
Oder Wege zeigt an die wir noch nicht gedacht haben
 
rernanded hat gesagt.:
Deshalb dachte ich ja es wäre mit Cronjobs möglich. Ist es aber wohl nicht.
Doch, ist es und ich habe es schon praktiziert. Jedenfalls wenn ich richtig verstehe, was Du vorhast.
Du musst die ID speichern und von Aufruf zu Aufruf des Skriptes durch den Cronjob weiterschalten bzw. erhöhen. Pro Aufruf des Skriptes durch den Cronjob wird die ID gelesen, die Operationen für diese ID durchgeführt, die ID weitergeschaltet und wieder gespeichert. Beim nächsten Aufruf des Skriptes dann das selbe für die neue ID gemacht bis alle abgearbeitet sind.
 
Zuletzt bearbeitet:
@basti: Danke. Aber ich denke so gehts nicht weiter.
@Sempervivum: Genauso denke ich es mir. Aber beim Lesen einiger Posts zu dem Thema quer durchs Netz stösst man nicht auf Angaben die Mut machen mit cronjobs eine Lösung zu finden.
Hast Du denn eine cron-script-Grundidee wie ich drangehen könnte, einen solchen Cronjob habe ich bisher nie angefertigt, lediglich dazu abundzu entsprechende Anbieter beauftragt?
Die notwendige Oberfläche um den/die cronjob/s anzulegen habe ich.

Und vllt. kann man auch zusätzlich sleep(); benutzen.?!
 
Zuletzt bearbeitet:
Zurück