statt AJAX/js clientseitig => php serverseitig

rernanded

Erfahrenes Mitglied
Hallo
wie könnte ich die folgende Funktion (=clientseitig per AJAX/js(s.u.)) stattdessen server-seitig ausführen lassen? Per node.js? Oder auch per php, so dass ich die entsprechende php-Seite per cronjob einmal täglich/wöchentlich/monatlich aufrufen kann.

MONI

HTML:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
</head>
<body>
<button id="button">los</button>
<div id="info"></div>
<script>
var time=3000;
var ende=1000;
function php_aufrufen(id,ende){
       if(id<=ende){
           $.ajax({
               type: 'POST',
               url: 'wow.php',
               data: {id:id},
               success: function(data){
                  setTimeout(function(){
                       id++;
                     $('#info').html(data)
                     php_aufrufen(id,ende);
                    },time);
               },
               error:function(err){
                      console.log('Fehler beim aufrufen = '+err)  
               }
           });
       }
}

document.getElementById('button').addEventListener('click',function(){
      php_aufrufen(0,ende);
})
</script>
</body>
</html>
 
per cronjob ist das kein problem.
Es gibt auch online Anbieter die Cronjobs anbieten.

Du kannst dir ja auch ein selber bauen.
Du machst dir ein Php Script fertig was du in deiner Webseite einbindest.
Beim ersten Besucher des Tages läßt du das Script anschubsen.
Speicherst das Datum und läßt diesen Tag keinen aufruf des Scriptes zu.
Am nächsten Tag machst du das gleiche und so weiter.
So ungefähr
PHP:
<?php
   error_reporting(-1);
   ini_set('display_errors', true);
   $file='cronhelper.txt';
   $r=file_get_contents($file);
   $heute=date('Y-m-d');
   //echo "Last Upate am  $r";
   if($r!=$heute){
       echo "cron gestartet";
       include('wow.php');
       file_put_contents($file, $heute);
   }else{
       echo "cron lief heute schon mal";
   }
?>
in cron.txt steht nur das Datum
Code:
2020-04-28
cron.txt kann man auch mit der Datenbank ersetzen
Ob das so der richtige Weg ist weiß ich nicht , würde mich aber auch mal interesieren.( funktioniert aber gut )
 
Danke Basti, aber meine obige Funktion in AJAX/js wird damit nicht gestartet/ausgeführt. Ich brauche eine alternative Funktion in php damit diese auf meinem Server läuft und die man sicherlich mit Deinem cron-script starten kann.
MONI
 
Zuletzt bearbeitet:
wie oft soll dein Ajax Script den laufen ?
Sollen da alle 3000 id's durchlaufen ?
Was passiert den in wow.php ?
Das kann man bestimmt auch ohne ajax machen und nur mit Php und dann währe ein Cron der das Php Script einmal anschubst kein problem
 
Das Script soll einmal am Tag laufen. Teils auch nur einmal in der Woche, im Monat.
Alle 3.000 IDs sollen durchlaufen. Ich weiß das dauert und deshalb will ich ja eine Serverlösung, denn die Ajax-Lösung ist ja bereits von Dir (anderer Thread), aber sie erweist sich leider als problematisch, weil meine Internetverbindung nicht stabil ist(auf dem Land). Ich hab da zwar hin und wieder mal draufgeguckt und händisch was erledigt, aber nun die wow.php entsprechend erweitert.
Deshalb die Serverlösung, der Server läuft stabil rund um die Uhr.
In der wow.php werden Datenbankinhalte aufgerufen, die je nach Inhalt neu sortiert werden und ergänzt werden. Es handelt sich u.a. um alte Datenbestände die laufend mal aufgefrischt werden müssen weil sich zB Gesetze geändert haben.
 
Dann implementier die 3000er-Schleife komplett serverseitig anstatt auf 3000 Requests an den Server zu bauen.
 
Hallo Basti ich kann Dir nicht alles "senden", weil es firmenintern ist.
Hier aber mal ein Beispiel für eine von mehreren wow.php bei der es darum geht alte Websites auf unseren Firmenservern und denen von Kunden abzurufen und zu kontrollieren, was drinsteht und ev. abmahnfähig sein könnte und was nach neuesten Gesetzen geändert werden muß. Ausserdem werden die Verlinkungen(relative, absolute Pfade, ...) geprüft. Ebenso keywords und description in den meta tags ... Insgesamt muß ich zZ über 90.000 Seiten prüfen.

Einiges habe ich bereits händisch gemacht und einiges geht per CMS. Es gibt aber so viele alte Seiten die eben einer derartigen Prozedur bedürfen. Die will man nicht löschen weil bei google usw. gelistet.
Lass uns also bitte nicht diskutieren dass man alles viel besser machen könnte. Weiß ich. Nun ist es aber so und ich hab das Problem. Muß wegen Corona zuhause arbeiten(Homeoffice) und die Verbindung ist Mist.

MONI

PHP:
<?php
header("Content-Type: text/html; charset=UTF-8");
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<?php
error_reporting(0);

$host = "localhost";
$port = "3306";
$username = "";
$password = "";
$dbname = "";

$pdo = new PDO("mysql:host=$host;port=$port;dbname=$dbname", "$username", "$password");

$id = $_POST["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>
 
Zuletzt bearbeitet:
Zurück