Tägliches Script
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
besucher
browser
date
datenbank
datum
endeffekt
funktion
gast
glauben
http
jahr
menge
monat
nehmen
ort
pack
tabelle
tag
uhr
url
-
Hallo Zusammen,
Ich suche einen Weg mittels PHP ein Script zu schreiben welches immer nur 1X am Tag ausgeführt werden soll.
Das Script soll um 0 Uhr jeden Tag aktiviert werden, und solange aktiviert bleiben, bis das erste Mal die Seite aufgerufen wird.
Hat da Jemand eine Idee, wie sich das realisieren lässt?
LG -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Im Premium-Paket gibt's afair Cronjobs. Wie genau du die einstellen kannst, vermag ich dir gerade nicht zu sagen.
Damit kannst du aber theoretisch zur gewünschten Zeit ein Script ausführen lassen.
Wie genau meinst du die Stelle mit "solange aktiviert bis zum ersten Besuch"?
So lange laufen lassen, bis ein Besucher die Seite betritt?
Bei LC wird das aufgrund greifender Scriptlimits nicht funktionieren.
Auf einem eigenen Server ist das natürlich machbar. -
marvinkleinmusic schrieb:
Ich suche einen Weg mittels PHP ein Script zu schreiben welches immer nur 1X am Tag ausgeführt werden soll.
Laß das Script doch einfach täglih um 0 Uhr von einem Crondienst anstoßen. Wenn Du den Premiumdienst nutzt, kannst Du den Cronjob sogar bei Lima in der Verwaltung konfigurieren
und solange aktiviert bleiben, bis das erste Mal die Seite aufgerufen wird.
Schlechte Karten für dich. Länger als 90 Sek. (bzw. 300 auf dem Paidspace), wird kein PHP-Script bei Lima laufen.
Edith sagt:
marvinkleinmusic schrieb:
Nun ich habe eine Datenbank wo alle Gäste täglich gesammelt werden. Der erste Gast nach veränderung des Datums soll dann die Funktion auslösen, dass die Datenbank komplett geleert wird, sodass nur wieder die Gäste von heute in der DB vorhanden sind.
Dafür braucht es weder Cronjob, noch endlos laufendes Script. ;)
Beitrag zuletzt geändert: 30.7.2015 19:49:03 von fatfreddy -
Inwieweit es sinnvoll ist die Tabelle zu leeren sei mal dahingestellt. (Ich würde einen Timestamp nehmen und dort ggf. dann nur auf der Seite die Besucher des aktuellen Tages anzeigen)
Ansonsten pack' dir einen SQL-Befehl rein, der alle Datensätze löscht, die älter als das aktuelle Datum 00:00 sind. -
muellerlukas schrieb:
Inwieweit es sinnvoll ist die Tabelle zu leeren sei mal dahingestellt. (Ich würde einen Timestamp nehmen und dort ggf. dann nur auf der Seite die Besucher des aktuellen Tages anzeigen)
Ansonsten pack' dir einen SQL-Befehl rein, der alle Datensätze löscht, die älter als das aktuelle Datum 00:00 sind.
Nun ich halte gleichzeitig noch in einer anderen Tabelle fest, wie viele Besucher es an den Tag gab. Diese werden dann in einer Tabelle ausgewertet: http://marvinkleinmusic.de/test.php.
Deswegen kann ich nicht einfach die Einträge löschen wo das Datum 1 Tag älter ist.
Bevor er löscht soll er noch eine Abfrage starten um die Werte für den Eintrag in die zweite Tabelle zu erhalten.
Sprich->num_rows und get['id'] für die Anzahl der Besucher am Tag und wie die gesamte Anzahl an Besuchern bis zu diesem Tag war.
LG
-
Du kannst dich einfach auf einer externen Cronjobseite regestieren (cronjob.de, ...) und dann wird von dort eine url aufgerufen.
Du könntest um 0 Uhr dann deine Seite/blablabla.php aufrufen und dieses Script wird dann die aufgaben erledigen -
Ich glaube, ich stehe gerade total auf dem Schlauch.
Wenn du im Endeffekt eh nur die Aufrufe pro Tag brauchst, warum benutzt du dann nicht einfach das INSERT/DUPLICATE-Entry von Mysql?https://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
Dann sparst du dir den Stress und hast halt entsprechend deine täglichen Aufrufszahlen. -
Warum speichert man zweimal das gleiche?
Bei entsprechenden Anfragen kann man doch alles darstellen und auswerten.
Gibt da sogar für Datumsangaben entsprechendes für MySQL wie DAY MONTH YEAR -
Hallo Zusammen,
muellerlukas schrieb:
Ich glaube, ich stehe gerade total auf dem Schlauch.
Wenn du im Endeffekt eh nur die Aufrufe pro Tag brauchst, warum benutzt du dann nicht einfach das INSERT/DUPLICATE-Entry von Mysql?https://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
Dann sparst du dir den Stress und hast halt entsprechend deine täglichen Aufrufszahlen.
Davon habe ich noch nie etwas gehört. Auch durch Videos werde ich nicht schlau wofür diese Funktion genau ist. Kann mir das Jemand mal erklären?
all-in1 schrieb:
Warum speichert man zweimal das gleiche?
Es wird ja nicht 2 Mal das gleiche gespeichert.
Ich versuche es mal mittels der Datenbanken zu erklären.
Counter:
http://fs1.directupload.net/images/150731/frbrsqs5.png
guests_day:
http://fs2.directupload.net/images/150731/kc8gphr6.png
Nun der Code für die Werte:
////Counter sofern eine Verbindung zur db besteht ////Variabeln $tag = date("d"); $monat = date("m"); $jahr = date("Y"); $datum = $tag . "." . $monat . "." . $jahr; $timestamp = time(); $zeit = $timestamp-900; /// 15 Minuten $timenow = mktime(0,0,0,$monat,$tag,$jahr); $gestern = strtotime("-1 day"); $alter_tag = date("d.m.Y",$gestern); $datum_gestern = $alter_tag . "." . $monat . "." . $jahr . "."; $ort = $_SERVER["REQUEST_URI"]; $woher = $_SERVER["HTTP_REFERER"]; $browser = $_SERVER["HTTP_USER_AGENT"]; $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; /// MySQL Abfragen $counter_del = $db->query("SELECT * FROM `counter` WHERE `timed` < '" . $timenow . "'"); $counter_new = $db->query("SELECT * FROM `counter` WHERE `ip` = '$ip'"); $get_total = $db->query("SELECT * FROM `counter` ORDER BY id DESC"); /// Ergebnisse $menge = $counter_new->num_rows; $total_day_guests = $counter_del->num_rows; $get_total_array = $get_total->fetch_array(); $get_total = $get_total_array['id']; $get_time = $get_total_array['timed']; $datum_abfrage_db = date("d.m.Y",$get_time); if($datum_abfrage_db != $datum){ $db->query("INSERT INTO `guests_day` (`date`,`guests_counter`,`total_guests`) VALUES ('$datum_gestern', '$total_day_guests', '$get_total')"); $db->query("DELETE FROM `counter`"); $db->query("INSERT INTO `counter`(`ip`,`timed`,`ort`,`woher`,`browser`) VALUES ('$ip','$timestamp','$ort','$woher','$browser')"); } /////Eintragung neuer Gaeste if($menge == 0){ $db->query("INSERT INTO `counter`(`ip`,`timed`,`ort`,`woher`,`browser`) VALUES ('$ip','$timestamp','$ort','$woher','$browser')"); } elseif($menge == 1){ $db->query("UPDATE `counter` SET `timed`='$timestamp', `ort`='$ort' WHERE `ip`='$ip'"); }
Nebenbei angemerkt: Ich habe das Problem mittels if($datum_abfrage_db != $datum) gelöst
Ich möchte die Anzahl der Einträge die sich in der db counter befinden als Zahl in die Zweite Tabelle eintragen, sowie die höchste aktuelle ID.
LG
-
Dann nimm keine Videos sondern lies die Doku. ;)
Das erstellt einen Datensatz bzw ändert einen wenn der Datensatz mit zb dem Datum alseinzigartiger schon besteht. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage