Cronjob liefert kein Ergebnis [SOLVED]
Cronjob liefert kein Ergebnis
Es geht um eine Radiostatistik, die Seite dafür läuf fehlerfrei, ist also ans neue PHP angepasst.
Der Cronjob ist auch eingerichtet, so wie die Datenbank wo die Daten gespeichert werden sollen.
Der Cronjob ruft nun alle 15 Minuten eine PHP Datei auf, wo der Shoutcast Stream abgefragt wird.
In die Datenbank sollen Urhzeit, Hörer und der auf dem Stream befindliche DJ gespeichert werden ... und genau hier ist das Problem.
Befehl: /home/users/retterradio/www/webseiten/radiostatistik/streamquery.php
Status: Beendet
Ausführzeit: 00:00:01
Rückgabestatus-Code: 0 (Erfolg)
Ausgabe: Keine Ausgabe
Viel mehr Infos bekomme ich nicht, ich weiß nur das nichts in die Datenbank geschrieben wird.
Die streamquery.php ist fehlerfrei und ans neue PHP als auch an die neue Maria Datenbankversion angepasst.
Hat jemand ne Idee, woran es eventuell liegen könnte?
Hier mal die PHP Info https://www.retter-radio.de/phpinfo.php
Vielleicht muss ich ja noch irgendwas erlauben?
Danke schon mal
PS: Ich kann auch gerne den Code der streamquery.php hier posten, aber wie gesagt an sich ist die fehlerfrei
- Jolinar
- Community Moderator
- Posts: 4004
- Joined: Sat 30. Jan 2016, 07:11
- Location: Weimar (Thüringen)
- Contact:
Re: Cronjob liefert kein Ergebnis
Das ist so nicht ganz richtig.
Dein OS ist sehr mitteilungsfreudig und protokolliert jede Aktion in irgendein Logfile.
Vielleicht kommt uns ja eine Idee, wenn du uns mit weiteren Informationen versorgst, zB:
- Wie rufst du den Cronjob auf?
- Was steht in den relevanten Logfiles (Webserver, PHP, whatever)?
Data Collector für Community Support
___
Ich verwende zwei verschiedene Schriftfarben in meinen Beiträgen /
I use two different font colors in my posts:
- In dieser Farbe schreibe ich als Moderator und gebe moderative Hinweise oder begründe moderative Eingriffe /
In this color, I write as a moderator and provide moderative guidance or justify moderative interventions - In dieser Farbe schreibe ich als Community Mitglied und teile meine private Meinung und persönlichen Ansichten mit /
In this color, I write as a community member and share my personal opinions and views
Re: Cronjob liefert kein Ergebnis
https://kau-boys.de/4795/webentwicklung ... n-php-code
Vielleicht sind die MariaDB Zugangsdaten falsch?
Tobi
-----------------------------
wewoco.de
Das Forum für Reseller, Digital-Agenturen, Bildschirmarbeiter und Mäuseschubser
Re: Cronjob liefert kein Ergebnis
Zugangsdaten sind 100% richtig .... habe hier jetzt allerdings das Passwort unkenntnich gemacht

Code: Select all
<?php
$dbhost="localhost";
$dbbase="retterradio_db4";
$dbuser="retterradio_db4";
$dbpwd="xxxxxxxxxxxx";
// $streamURL = "retter-radio.de";
$streamURL = "xxxxxxxxxxx";
$streamPort = 8000;
$errno ="";
$errstr = "";
$page="";
function getDJ($streamTitle, $db) {
$result = new Userdata;
//$sql = "SELECT ID,name FROM mods WHERE `ismod`='1'";
//$rs = $db->query($sql);
$rs = @mysqli_query($db, "SELECT ID,name FROM mods WHERE `ismod`='1'");
if ($rs) {
$mods = array();
while ($md = $rs->fetch_assoc()) {
$usr = new Userdata;
$usr->ID = $md["ID"];
$usr->Name = $md["name"];
array_push($mods,$usr);
}
if (count($mods) > 0) {
foreach ($mods as $mod) {
if (strpos($streamTitle,$mod->Name) > - 1) {
return $mod;
}
}
}
}
return $result;
}
//$db= new mysqli($dbhost,$dbuser,$dbpwd,$dbbase);
$db = @mysqli_connect($dbhost, $dbuser, $dbpwd);
if ($db) {
mysqli_select_db($db,$dbbase);
} else {
die("Live Stats can't connect to mysql - please check your configuration");
}
$fp = fsockopen($streamURL, $streamPort, $errno, $errstr, 30);
if ($fp > 0){
fputs($fp,"GET /index.html?sid=1 HTTP/1.0\r\nUser-Agent: XML Getter (Mozilla Compatible)\r\n\r\n");
while(!feof($fp)) {
$page .= fgets($fp, 1000);
}
$page=substr($page,strpos($page,"Stream Status:")+2,4000);
$page=substr($page,strpos($page,"<b>")+2,4000);
$stat=substr($page,1,strpos($page,"</b>")-1);
$streamdata["status"]=substr_count($stat,"Stream is up");
$lstnstart = strpos($page,"listeners (") + 11;
$lstnend = strpos($page," unique");
$streamdata["listeners"]=substr($page,$lstnstart,$lstnend - $lstnstart);
$streamdata["status"]="on";
$page=substr($page,strpos($page,"Stream Title:")+2,4000);
$page=substr($page,strpos($page,"<b>")+2,4000);
$streamdata["title"]=substr($page,1,strpos($page,"</b>")-1);
$page=substr($page,strpos($page,"Current Song:")+2,4000);
$page=substr($page,strpos($page,"<b>")+2,4000);
$streamdata["song"]=substr($page,1,strpos($page,"</b>")-1);
$streamdata["mod"]= getDJ($streamdata["title"],$db);
//$fp = fopen("hoerer.csv","a");
//fwrite($fp,date("d.m.Y").";".date("H:i").";".$streamdata["title"].";".$streamdata["listeners"]."\r\n");
//fwrite($fp,date("Y-m-d H:i:s").";".$streamdata["title"].";".$streamdata["listeners"]."\r\n");
//fclose($fp);
// SQL-Statement das die Daten in der DB speichert
//$sql = "INSERT INTO hoerer (title,hoerer,`mod`,`modID`) VALUES ('".$streamdata["title"]."','".$streamdata["listeners"]."','".$streamdata["mod"]->Name."',".$streamdata["mod"]->ID.")";
//$db->query($sql);
$result = @mysqli_query($db, "INSERT INTO hoerer (title,hoerer,`mod`,`modID`) VALUES ('".$streamdata["title"]."','".$streamdata["listeners"]."','".$streamdata["mod"]->Name."',".$streamdata["mod"]->ID.")");
@mysqli_close($db);
} else {
$streamdata["status"]="off";
}
class Userdata {
public $ID = 0;
public $Name ="";
}
?>
home/users/retterradio/logs/statstest.retter-radio.de/ Error.log:
[Tue Nov 21 05:38:14.779233 2023] [autoindex:error] [pid 3799276:tid 140091691296512] [client 205.210.31.93:58862] AH01276: Cannot serve directory /home/users/retterradio/www/webseiten/radiostatistik/: No matching DirectoryIndex (index.html,index.cgi,index.pl,index.php,index.xhtml,index.htm) found, and server-generated directory index forbidden by Options directive
Das ist ja das Problem, es protokolliert alles in "irgendeinem" Log ... aber das erstmal zu finden, außerdem meinte ich mit dem "viel mehr Infos bekomme ich nicht" die Meldung im KeyHelp, da wo man den Cronjob einrichtet und starten kann ect.
Den Cronjob rufe ich gar nicht auf, der ist doch im KeyHelp angelegt (momentan inaktiv, weil es ja noch nicht funktioniert, ansonsten alle 15 Minuten)
Pfad: /home/users/retterradio/www/webseiten/radiostatistik/streamquery.php
Inerval: 15 Minuten
PHP-Skript ausführen
cronjob/master.log:
====
[PID-3896212] [21-Nov-2023 16:28:03] INFO | jobs to run: update.php
[PID-3896212] [21-Nov-2023 16:28:03] INFO | >>> trying to run "update"
[PID-3896212] [21-Nov-2023 16:28:03] INFO | lock "update" acquired
[PID-3896212] [21-Nov-2023 16:28:03] INFO | processing the job ...
[PID-3896212] [21-Nov-2023 16:28:03] INFO | <<< job done, releasing lock "update"
====
Re: Cronjob liefert kein Ergebnis
und wenn du ihn auf der Konsole mal manuell ausführst?
Florian Cheno
**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************
Re: Cronjob liefert kein Ergebnis
So siehst du natürlich auch nicht, ob es dort klemmt.
Weiterhin versetzt du das Ganze auch nicht in den "Modus", dass er dir alle Fehler anzeigen soll, Stichwort: display_errors, display_startup_errors, error_reporting
Alexander Mahr
**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************
Re: Cronjob liefert kein Ergebnis
Dann habe ich Zeichen gezählt.
"(" wird 63 Mal gefunden.
")" aber nur 62 Mal.
Wie heißt es so schön: "Finde den Fehler
Tobi
-----------------------------
wewoco.de
Das Forum für Reseller, Digital-Agenturen, Bildschirmarbeiter und Mäuseschubser
Re: Cronjob liefert kein Ergebnis
=> https://xkcd.com/327/RR_Tappi wrote: ↑Tue 21. Nov 2023, 16:45Code: Select all
$result = @mysqli_query($db, "INSERT INTO hoerer (title,hoerer,`mod`,`modID`) VALUES ('".$streamdata["title"]."','".$streamdata["listeners"]."','".$streamdata["mod"]->Name."',".$streamdata["mod"]->ID.")");
--
A Windows user reinstalls software every few weeks.
A Linux user reinstalls software every few weeks.
The difference is with Linux the version numbers change.
Re: Cronjob liefert kein Ergebnis
In Zeile 57 das habe ich gerade entdeckt
Code: Select all
$lstnstart = strpos($page,"listeners (") + 11;
Code: Select all
$lstnstart = strpos($page,"listeners") + 11;
Re: Cronjob liefert kein Ergebnis
Was soll mir der Link nun sagen24unix wrote: ↑Tue 21. Nov 2023, 17:32=> https://xkcd.com/327/RR_Tappi wrote: ↑Tue 21. Nov 2023, 16:45Code: Select all
$result = @mysqli_query($db, "INSERT INTO hoerer (title,hoerer,`mod`,`modID`) VALUES ('".$streamdata["title"]."','".$streamdata["listeners"]."','".$streamdata["mod"]->Name."',".$streamdata["mod"]->ID.")");

Re: Cronjob liefert kein Ergebnis
Habe ich noch nie gemacht über die Shell, kannst du mir bitte sagen, wie der Befehl dafür lautet?
Auf dem alten Server ging das alles noch, bis zum Umzug auf den neuen bzw. bis zum Upgrade (neues Betriebssystem, neue Datenbank usw.)
Re: Cronjob liefert kein Ergebnis
Dass Du offensichtlich nicht weist, was SQL-Injection ist, und wie man sich dagegen schützt.RR_Tappi wrote: ↑Tue 21. Nov 2023, 17:57Was soll mir der Link nun sagen24unix wrote: ↑Tue 21. Nov 2023, 17:32=> https://xkcd.com/327/RR_Tappi wrote: ↑Tue 21. Nov 2023, 16:45Code: Select all
$result = @mysqli_query($db, "INSERT INTO hoerer (title,hoerer,`mod`,`modID`) VALUES ('".$streamdata["title"]."','".$streamdata["listeners"]."','".$streamdata["mod"]->Name."',".$streamdata["mod"]->ID.")");
![]()
Abgesehen davon, das mysqli eigentlich schon lange durch PDO abgelöst ist unterstützt es prepared statements.
Du verwendest ungeprüft Variablen. Im Prinzip braucht nur eine Modi einen "lustigen Tag" haben und setzt einen Titel der die gesamte Db himmelt.
Edit:
Gib mal die Ausgabe von
Code: Select all
show create table hoerer;
Code: Select all
show create table mods;
--
A Windows user reinstalls software every few weeks.
A Linux user reinstalls software every few weeks.
The difference is with Linux the version numbers change.
Re: Cronjob liefert kein Ergebnis
Error_reporting aktivieren und die angezeigten Fehler abarbeiten.
Dann sollte es wieder funktionieren.
Tobi
-----------------------------
wewoco.de
Das Forum für Reseller, Digital-Agenturen, Bildschirmarbeiter und Mäuseschubser
Re: Cronjob liefert kein Ergebnis
Der Code ist trotzdem eine Katastrophe, so hat man zu Zeiten von 5.6 evtl. noch gecoded.
--
A Windows user reinstalls software every few weeks.
A Linux user reinstalls software every few weeks.
The difference is with Linux the version numbers change.
Re: Cronjob liefert kein Ergebnis [SOLVED]
Erste Tests liefen schon und es wurde bereits etwas gespeichert
Hat sich also erledigt - danke noch mals