Beste SD-ers,
Het was een lange dag en er was veel tijd mee gemoeid, maar daardoor zie ik mijn fout denk ik niet. Ik wil dat elke dag mijn database wordt op geschoond. Dit heb ik door middel van een cronjob gedaan. Echter de cronjob werkt volgens mij wel, maar het script niet. Het script pakt namelijk bij het updaten maar één enkel veld. Ik heb alles nu al drie keer nagelopen, maar kijk er echt gewoon overheen. Misschien iemand van jullie die nog helder genoeg is?! Hope so!!
Daarnaast laat hij ook nog eens zien: It's no time yet, maar het zit wel binnen dat marge qua tijd. Dus waarom klopt dit niet? Is er misschien een handige functie voor?PHP Code:
<?php
// Make the time interval
$cur_time = date('H:i');
$min_time = '23:50';
$max_time = '01:00';
if($cur_time > $min_time || $cur_time < $max_time) {
// The stats page can't be visited
echo 'It\'s not the time yet';
} else {
include 'config.php';
// Get the records
$q = "SELECT * FROM moviestats";
$sql = mysql_query($q) or die(mysql_error());
$count = mysql_num_rows($sql);
if($count == false) {
// There're no records
echo 'There\'re no movies yet';
} else {
// There're records, update them
while($fetch = mysql_fetch_object($sql)) {
// Update the data fields
$q = "UPDATE moviestats
SET
ViewsToday = '0'
WHERE
MovieNumber = '".mysql_real_escape_string($fetch->MovieNumber)."'";
$sql = mysql_query($q) or die(mysql_error());
}
}
}
?>
Hopelijk kan iemand me helpen.
Stefan
- Update probleem (php, mysql)
-
24-01-2011, 00:38 #1Particulier
- Berichten
- 651
- Lid sinds
- 16 Jaar
Update probleem (php, mysql)
-
In de schijnwerper
-
24-01-2011, 00:49 #2
- Berichten
- 434
- Lid sinds
- 16 Jaar
Re: Update probleem (php, mysql)
Ik weet het niet zeker, maar misschien dat de waarde van $sql wordt vervangen door de $sql in de while loop waardoor de while loop niet voor een tweede keer wordt uitgevoerd.
Zelf nummer ik de query's in dit soort situaties, meer voor de duidelijkheid voor mezelf, dus weet ook niet of dit daadwerkelijk het probleem is.
Overigens, 0 is een cijfer, oftewel hoeft deze niet tussen quotes bij de update query.
Zelfde geldt overigens voor movienumber.
EDIT:
Zie net dat hetgeen je eigenlijk doet, is alle records ophalen uit de moviestats tabel en bij elk record viewstoday op 0 zetten.
Maar dat kan veel simpeler en korter:
$query = "UPDATE moviestats SET ViewsToday = 0";
Klaar, dan doe je alle records in 1 keer.
-
24-01-2011, 00:53 #3Particulier
- Berichten
- 651
- Lid sinds
- 16 Jaar
Re: Update probleem (php, mysql)
@stefanvi: Scherp!! Dat was de oplossing. Ik heb van de onderste string een $q_u en $sql_u gemaakt en dat werkt. Allemaal vrij logisch, maar het werkt nu en daar ben ik blij om.
Ik zal de 0 tussen de haakjes weghalen. Is het heel erg als dit tussen de quotes staat? Of maakt het eigenlijk niet zoveel uit? MovieNumber is in dit geval een soort id met hoofdletters, kleine letters en cijfers, dus daar gaat het dan niet voor op. Maar dat kon je niet weten.
Hartelijk dank!!
Nog even een extra vraagje: Hoe krijg ik het bestand beveiligd? Dat alleen via een cronjob het script wordt uitgevoerd, maar dat een gewone gebruiker er niet bij kan?
Is het een optie om bijvoorbeeld het volgende te gebruiken:
PHP Code:if(date('H:i') == 00:00) {
// rest van de code
}
-
24-01-2011, 01:12 #4
- Berichten
- 434
- Lid sinds
- 16 Jaar
Re: Update probleem (php, mysql)
Je kunt het script ook buiten je public_html zetten, dan kan je cronjob er nog wel bij, maar vanuit een browser kun je er niet meer bij. In een van de mappen voor je public_html bedoel ik dan.
Vaak heb je een structuur als
/[gebruikersnaam]/domains/[domein]/public_html
Meesten zetten hem dan in in de eerste map met de gebruikersnaam.
-
24-01-2011, 01:14 #5Particulier
- Berichten
- 651
- Lid sinds
- 16 Jaar
Re: Update probleem (php, mysql)
@Stefanvi: Dat zou een oplossing zijn. Het stomme is dat de cronjob niet wordt uitgevoerd. Ik ga eens kijken of een locatie verandering dat probleem verhelpt, maar denk van niet.
-
24-01-2011, 01:20 #6
- Berichten
- 434
- Lid sinds
- 16 Jaar
Re: Update probleem (php, mysql)
Waarschijnlijk geef je alleen het pad naar je script op, maar er moet meer bij. Probeer het eens met de volgende regel:
/usr/local/bin/php -q -f /home/gebruikersnaam/domains/domein.nl/public_html/cronjob.php
Waarbij je de gegevens even naar je eigen situatie aan moet passen uiteraard.
-
24-01-2011, 01:31 #7Particulier
- Berichten
- 651
- Lid sinds
- 16 Jaar
Re: Update probleem (php, mysql)
@stefanvi: Ook dat werkt niet. Het script behoort volgens mij gewoon toegankelijk te zijn. Heb de goede locatie ingevoerd, maar er gebeurt niets. Moet ik misschien bepaalde instellingen op de server hebben staan? Wat moet er aan staan om cronjobs uit te kunnen voeren?
-
24-01-2011, 01:35 #8
- Berichten
- 1.901
- Lid sinds
- 18 Jaar
Re: Update probleem (php, mysql)
Wat voor tijdsinterval heb je voor de cronjob ingevuld?
-
24-01-2011, 01:39 #9Particulier
- Berichten
- 651
- Lid sinds
- 16 Jaar
Re: Update probleem (php, mysql)
Minute: 30
Hour: 1
Day of the month: *
Month: *
Day of week: *
Path: /home/*gebruiker*/*domain*/cron/day-mov-stats.php
Heb deze geprobeerd en ook die stefanvi aangaf.
-
24-01-2011, 01:49 #10
- Berichten
- 434
- Lid sinds
- 16 Jaar
Re: Update probleem (php, mysql)
welk controlpanel heb je?
Directadmin / Cpanel / Plesk etc.
-
24-01-2011, 01:50 #11Particulier
- Berichten
- 651
- Lid sinds
- 16 Jaar
Re: Update probleem (php, mysql)
Direct Admin.
Heb ook al via google gezocht en daar stond het zoals jij het beschreef (misschien dat jij het daarvandaan hebt), maar dat werkte helaas ook niet ..
-
24-01-2011, 01:54 #12
- Berichten
- 434
- Lid sinds
- 16 Jaar
Re: Update probleem (php, mysql)
En je map opbouw is ook zeker weten correct?
Mis namelijk je domains map tussen gebruiker en *domain*
en cron staat ook echt in de *domain* map, en niet in de public_html?
-
24-01-2011, 01:57 #13
- Berichten
- 1.901
- Lid sinds
- 18 Jaar
Re: Update probleem (php, mysql)
Als je controleerd op ($curtime == 00:00) dan mag hij ook niet veel doen op het moment dat je de cronjob aanroept op 01:30. Als je dat al weg hebt gehaald heb ik even niets gezegd.
-
24-01-2011, 02:01 #14Particulier
- Berichten
- 651
- Lid sinds
- 16 Jaar
Re: Update probleem (php, mysql)
Vanuit zichzelf geeft direct admin het volgende weer:
/home/*gebruiker*/
*gebruiker* is hierbij bv: henk, dus /home/henk/
En het cronbestand staat echt in /home/henk/website.nl/cron/day-mov-stats.php
Aanvullend bericht:
@Joshua: Dat had ik al weg gehaald. Op een of andere manier wordt de cronjob niet uitgevoerd. Terwijl ik volgens mij alles goed had ingesteld.Laatst aangepast door gast8208 : 24-01-2011 om 11:38 Reden: Automatisch samengevoegd.
-
24-01-2011, 11:43 #15Particulier
- Berichten
- 162
- Lid sinds
- 14 Jaar
Re: Update probleem (php, mysql)
Beste,
waarom het gebruik van een cronjob ?
Je kan het toch een bestand instellen dat controleer wanneer.
$q = mysql_query("SELECT date FROM cj WHERE id=1");
$r = mysql_fetch_array($q);
while(date('Y-m-d',$r['time']) <> date('Y-m-d')) {
include($day_conjob);
}
Zo ongeveer doe ik het :)
Hoop dat k je hier mee van dienst kan zijn.
En als je ook het verkoopt moet je dit ook niet ombouwen, namelijk niet alle ondersteunen cronjobs.
Mvg,
Aanvullend bericht:
oja zit wel foutje in hoor :D
while(date('Y-m-d',$r['time']) <> date('Y-m-d')) {
include($day_conjob);
$r['time'] += 86400;
}Laatst aangepast door gast26686 : 24-01-2011 om 11:52 Reden: Automatisch samengevoegd.
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic