Cronjob liefert kein Ergebnis  [SOLVED]

For topics beyond KeyHelp. / Für Themen jenseits von KeyHelp.
Post Reply
User avatar
RR_Tappi
Posts: 43
Joined: Sat 2. Sep 2023, 20:13
Location: OWL
Contact:

Cronjob liefert kein Ergebnis

Post by RR_Tappi »

Kein Plan wie ich den Betreff schreiben soll.

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
Ich bin Ostwestfale: STUR . HARTNÄCKIG . KÄMPFERISCH
User avatar
Jolinar
Community Moderator
Posts: 3612
Joined: Sat 30. Jan 2016, 07:11
Location: Weimar (Thüringen)
Contact:

Re: Cronjob liefert kein Ergebnis

Post by Jolinar »

RR_Tappi wrote: Tue 21. Nov 2023, 04:02 Viel mehr Infos bekomme ich nicht,
Das ist so nicht ganz richtig.
Dein OS ist sehr mitteilungsfreudig und protokolliert jede Aktion in irgendein Logfile.

RR_Tappi wrote: Tue 21. Nov 2023, 04:02 Hat jemand ne Idee, woran es eventuell liegen könnte?
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)?
Wenn jemand inkompetent ist, dann kann er nicht wissen, daß er inkompetent ist. (David Dunning)

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
User avatar
Tobi
Community Moderator
Posts: 2831
Joined: Thu 5. Jan 2017, 13:24

Re: Cronjob liefert kein Ergebnis

Post by Tobi »

Wie kommst du darauf, dass die streamquery.php fehlerfrei ist obwohl diese doch gar nicht funktioniert????

https://kau-boys.de/4795/webentwicklung ... n-php-code

Vielleicht sind die MariaDB Zugangsdaten falsch?
Gruß,
Tobi


-----------------------------
wewoco.de
Das Forum für Reseller, Digital-Agenturen, Bildschirmarbeiter und Mäuseschubser
User avatar
RR_Tappi
Posts: 43
Joined: Sat 2. Sep 2023, 20:13
Location: OWL
Contact:

Re: Cronjob liefert kein Ergebnis

Post by RR_Tappi »

Zu erst einmal das ist die streamquery.php
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 ="";
}
?>
Habe noch eine Subdomain eingerichtet, mit der ich die streamquery direkt aufrufen kann: https://statstest.retter-radio.de/streamquery.php

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"
====
Ich bin Ostwestfale: STUR . HARTNÄCKIG . KÄMPFERISCH
User avatar
Florian
Keyweb AG
Posts: 1261
Joined: Wed 20. Jan 2016, 02:28

Re: Cronjob liefert kein Ergebnis

Post by Florian »

Hallo,

und wenn du ihn auf der Konsole mal manuell ausführst?
Mit freundlichen Grüßen / Best regards
Florian Cheno

**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************
User avatar
Alexander
Keyweb AG
Posts: 3842
Joined: Wed 20. Jan 2016, 02:23

Re: Cronjob liefert kein Ergebnis

Post by Alexander »

Ohne mich mit dem Code jetzt länger als 10 Sekunden auseinander gesetzt zu haben, aber du unterdrückst alle potentiellen Fehler bei den mysqli_*() Funktionen mit @.
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
Mit freundlichen Grüßen / Best regards
Alexander Mahr

**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************
User avatar
Tobi
Community Moderator
Posts: 2831
Joined: Thu 5. Jan 2017, 13:24

Re: Cronjob liefert kein Ergebnis

Post by Tobi »

Also ich habe mir den o.g. Code in meinen Editor kopiert.

Dann habe ich Zeichen gezählt.
"(" wird 63 Mal gefunden.
")" aber nur 62 Mal.

Wie heißt es so schön: "Finde den Fehler 😁"
Gruß,
Tobi


-----------------------------
wewoco.de
Das Forum für Reseller, Digital-Agenturen, Bildschirmarbeiter und Mäuseschubser
User avatar
24unix
Posts: 1645
Joined: Sun 21. Jun 2020, 17:16
Location: Kollmar
Contact:

Re: Cronjob liefert kein Ergebnis

Post by 24unix »

RR_Tappi wrote: Tue 21. Nov 2023, 04:02 aber wie gesagt an sich ist die fehlerfrei
RR_Tappi wrote: Tue 21. Nov 2023, 16:45

Code: Select all

$result = @mysqli_query($db, "INSERT INTO hoerer (title,hoerer,`mod`,`modID`) VALUES ('".$streamdata["title"]."','".$streamdata["listeners"]."','".$streamdata["mod"]->Name."',".$streamdata["mod"]->ID.")");
=> https://xkcd.com/327/
mfg Micha
--
If Bill Gates had a nickel for every time Windows crashed …
… oh wait, he does.
User avatar
RR_Tappi
Posts: 43
Joined: Sat 2. Sep 2023, 20:13
Location: OWL
Contact:

Re: Cronjob liefert kein Ergebnis

Post by RR_Tappi »

Tobi wrote: Tue 21. Nov 2023, 17:09 Also ich habe mir den o.g. Code in meinen Editor kopiert.

Dann habe ich Zeichen gezählt.
"(" wird 63 Mal gefunden.
")" aber nur 62 Mal.

Wie heißt es so schön: "Finde den Fehler 😁"
In Zeile 57 das habe ich gerade entdeckt

Code: Select all

$lstnstart = strpos($page,"listeners (") + 11;
und geändert

Code: Select all

$lstnstart = strpos($page,"listeners") + 11;
es geht aber immer noch nicht
Ich bin Ostwestfale: STUR . HARTNÄCKIG . KÄMPFERISCH
User avatar
RR_Tappi
Posts: 43
Joined: Sat 2. Sep 2023, 20:13
Location: OWL
Contact:

Re: Cronjob liefert kein Ergebnis

Post by RR_Tappi »

24unix wrote: Tue 21. Nov 2023, 17:32
RR_Tappi wrote: Tue 21. Nov 2023, 04:02 aber wie gesagt an sich ist die fehlerfrei
RR_Tappi wrote: Tue 21. Nov 2023, 16:45

Code: Select all

$result = @mysqli_query($db, "INSERT INTO hoerer (title,hoerer,`mod`,`modID`) VALUES ('".$streamdata["title"]."','".$streamdata["listeners"]."','".$streamdata["mod"]->Name."',".$streamdata["mod"]->ID.")");
=> https://xkcd.com/327/
Was soll mir der Link nun sagen :?:
Ich bin Ostwestfale: STUR . HARTNÄCKIG . KÄMPFERISCH
User avatar
RR_Tappi
Posts: 43
Joined: Sat 2. Sep 2023, 20:13
Location: OWL
Contact:

Re: Cronjob liefert kein Ergebnis

Post by RR_Tappi »

Florian wrote: Tue 21. Nov 2023, 17:03 Hallo,

und wenn du ihn auf der Konsole mal manuell ausführst?
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.)
Ich bin Ostwestfale: STUR . HARTNÄCKIG . KÄMPFERISCH
User avatar
24unix
Posts: 1645
Joined: Sun 21. Jun 2020, 17:16
Location: Kollmar
Contact:

Re: Cronjob liefert kein Ergebnis

Post by 24unix »

RR_Tappi wrote: Tue 21. Nov 2023, 17:57
24unix wrote: Tue 21. Nov 2023, 17:32
RR_Tappi wrote: Tue 21. Nov 2023, 04:02 aber wie gesagt an sich ist die fehlerfrei
RR_Tappi wrote: Tue 21. Nov 2023, 16:45

Code: Select all

$result = @mysqli_query($db, "INSERT INTO hoerer (title,hoerer,`mod`,`modID`) VALUES ('".$streamdata["title"]."','".$streamdata["listeners"]."','".$streamdata["mod"]->Name."',".$streamdata["mod"]->ID.")");
=> https://xkcd.com/327/
Was soll mir der Link nun sagen :?:
Dass Du offensichtlich nicht weist, was SQL-Injection ist, und wie man sich dagegen schützt.

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;
und

Code: Select all

show create table mods;
dann überarbeite ich den Code.
mfg Micha
--
If Bill Gates had a nickel for every time Windows crashed …
… oh wait, he does.
User avatar
Tobi
Community Moderator
Posts: 2831
Joined: Thu 5. Jan 2017, 13:24

Re: Cronjob liefert kein Ergebnis

Post by Tobi »

Alex hat die Lösung doch schon gepostet.
Error_reporting aktivieren und die angezeigten Fehler abarbeiten.
Dann sollte es wieder funktionieren.
Gruß,
Tobi


-----------------------------
wewoco.de
Das Forum für Reseller, Digital-Agenturen, Bildschirmarbeiter und Mäuseschubser
User avatar
24unix
Posts: 1645
Joined: Sun 21. Jun 2020, 17:16
Location: Kollmar
Contact:

Re: Cronjob liefert kein Ergebnis

Post by 24unix »

Tobi wrote: Tue 21. Nov 2023, 18:37 Alex hat die Lösung doch schon gepostet.
Error_reporting aktivieren und die angezeigten Fehler abarbeiten.
Dann sollte es wieder funktionieren.
Der Code ist trotzdem eine Katastrophe, so hat man zu Zeiten von 5.6 evtl. noch gecoded.
mfg Micha
--
If Bill Gates had a nickel for every time Windows crashed …
… oh wait, he does.
User avatar
RR_Tappi
Posts: 43
Joined: Sat 2. Sep 2023, 20:13
Location: OWL
Contact:

Re: Cronjob liefert kein Ergebnis  [SOLVED]

Post by RR_Tappi »

Wir bauen es gerade komplett neu
Erste Tests liefen schon und es wurde bereits etwas gespeichert

Hat sich also erledigt - danke noch mals
Ich bin Ostwestfale: STUR . HARTNÄCKIG . KÄMPFERISCH
Post Reply