Hoi allemaal,
ik zit (nog steeds) met mijn handen in het haar met een cronjob die al een tijdje niet wilt doen wat ik zeg dat 'ie moet doen! De cronjob is gemaakt om een lijstje met XML feeds van M4N automatisch te importeren. Het script (hieronder plaats ik het zometeen in grote lijnen) werkt perfect als ik het via de browser aanroep. Echter wanneer de cronjob wordt uitgevoerd wordt 'Loop 1' maar één keer uitgevoerd.
Eerst even het script, hieronder zal ik wat meer toelichting geven:
Even om het geheel uit te beelden:PHP Code:
<?php
require_once('/home/*****/domains/*******/public_html/******/config.inc.php');
# Dit is de lijst met XML feeds die hij moet doorlopen
$import = array(
'Studentmobiel.nl' => "http://www.m4n.nl/dfurl/_df/stream-59-".$man_id.".xml?dfid=59&duid=".$man_id."&dhid=".$dhid."&m=xml_tree",
'algebeld.nl' => "http://www.m4n.nl/dfurl/_df/stream-5751-".$man_id.".xml?dfid=5751&duid=".$man_id."&dhid=".$dhid."&m=xml_tree",
'Belnu' => "http://www.m4n.nl/dfurl/_df/stream-7650-".$man_id.".xml?dfid=7650&duid=".$man_id."&dhid=".$dhid."&m=xml_tree"
);
/**
* Import the list
* Dit is dus 'Loop 1': het ophalen van de xml feeds uit de $import array
*/
foreach($import as $key => $value) {
$load = curl_get_url($value);
/**
* Importeren van de data gebaseerd op een kleine zoekterm
*/
foreach($load->data->record as $mobile) {
if(strtolower($mobile->vendor) == "**************") {
$sql = "HIER STAAT EEN QUERY";
mysql_query($sql);
}
}
echo "Uitvoeren van {$key} is gelukt.<br>";
}
?>
Als ik hem in de browser open op deze manier zie ik dus:
Uitvoeren van Studentmobiel.nl is gelukt.
Uitvoeren van algebeld.nl is gelukt.
Uitvoeren van Belnu is gelukt.
Als ik deze echo vervang met een stukje code die een .txt file vult, staat er in die txt file alleen 'Uitvoeren van Studentmobiel.nl is gelukt.'. Met andere woorden, als cronjob pakt hij enkel de eerste key uit de $import array en stopt hij dan opeens (waarom is me niet duidelijk dus).
Iemand die een foutje ziet?
Alvast bedankt.
- Hulp bij een XML Import Cronjob
-
25-03-2011, 22:26 #1
- Berichten
- 1.899
- Lid sinds
- 18 Jaar
Hulp bij een XML Import Cronjob
-
-
25-03-2011, 22:37 #2
- Berichten
- 25
- Lid sinds
- 14 Jaar
Re: Hulp bij een XML Import Cronjob
Hoe lang duurt een import gemiddeld via de browser? Kun je de exacte cron job die je aanroept ook even posten?
-
26-03-2011, 00:38 #3
- Berichten
- 1.899
- Lid sinds
- 18 Jaar
Re: Hulp bij een XML Import Cronjob
Niet langer dan een seconde of 30, pieken tot maximaal een minuut (hij loopt ook exact tot het einde van de eerste feed en stopt op het moment dat hij aan de 2e moet beginnen). Execution time is ruim voldoende ingesteld in elk geval, crobjob is:
/usr/local/bin/php -q -f /home/******/domains/*********/public_html/import/cronjob.php?croncode=*****
Croncode is momenteel uitgeschakeld (dacht dat dat het probleem kon zijn, maar blijkt niet zo te zijn).
-
26-03-2011, 07:56 #4
- Berichten
- 25
- Lid sinds
- 14 Jaar
Re: Hulp bij een XML Import Cronjob
Probeer het eens met wget.
/usr/bin/wget -q -O - -T 3600 -t 45 "http://test.nl/import.php">/dev/null 2>&1
-
26-03-2011, 12:54 #5
- Berichten
- 376
- Lid sinds
- 18 Jaar
Re: Hulp bij een XML Import Cronjob
Je kunt op die manier geen variabelen meegeven aan de cron.
Ik vond dit:
What you want to do is pass arguments in in the form of php -f scores.php '12/05/2009'. At that point, you'll just look at the $_SERVER['argv'] to get the value.
-
26-03-2011, 13:28 #6
- Berichten
- 1.899
- Lid sinds
- 18 Jaar
Re: Hulp bij een XML Import Cronjob
Nee ok, dat zou een probleem kunnen zijn. Maar hij staat momenteel zonder code aan en in dat geval loopt hij ook maar door één feed en niet door ze alle 3.
Ik zal het eens proberen met wget, was eigenlijk niet de bedoeling aangezien de cronjob buiten de webroot moet komen uiteindelijk en dan is wget geen optie meer.
/edit: dus dat testen heeft dan ook weinig nut denk ik..
-
26-03-2011, 16:51 #7
- Berichten
- 376
- Lid sinds
- 18 Jaar
Re: Hulp bij een XML Import Cronjob
Wordt de output van de cron naar je gemaild? Zo ja, doe eens direct na de foreach "echo $key.$value;".
Het kan best zijn dat je een bepaalde functie gebruikt aan het einde van je for-lus die niet werkt via de cron, en daar dus ermee stopt.
-
27-03-2011, 14:43 #8
- Berichten
- 1.899
- Lid sinds
- 18 Jaar
Re: Hulp bij een XML Import Cronjob
De output wordt in een logfile geschreven (die code staat er hier niet in). Hij schrijft een regel na elke foreach() dus voor elke URL schrijft hij een log met de URL erin en voor elk gevonden item een regel met een klein beetje data uit de feed.
Maar de output stopt direct na het geheel doorlopen van de eerste url/feed en gaat daarna niet verder. Als ik heb via de http oproep wordt de hele logfile wel mooi vol geschreven.
-
27-03-2011, 14:49 #9
- Berichten
- 25
- Lid sinds
- 14 Jaar
Re: Hulp bij een XML Import Cronjob
Beste Joshua,
Wordt de eerste XML feed wel daadwerkelijk geïmporteerd/bijgewerkt, of wordt de echo/log alleen weggeschreven? Dit is wel even belangrijk om te weten.
-
27-03-2011, 17:44 #10
- Berichten
- 1.899
- Lid sinds
- 18 Jaar
Re: Hulp bij een XML Import Cronjob
De hele database wordt bij het aanroepen van de cron leeg gemaakt en van de 1e feed/url worden de telefoons die voldoen aan de zoekterm gewoon ingevoerd.
-
27-03-2011, 20:50 #11
- Berichten
- 376
- Lid sinds
- 18 Jaar
Re: Hulp bij een XML Import Cronjob
Dan lijkt het mij toch een fatal-error die zich via de cron voordoet en om bepaalde redenen niet via de browser (de superglobal $_SERVER werkt bijvoorbeeld heel anders via de cron, $_SERVER['DOCUMENT_ROOT'] is bijv. leeg. Als je die dus ergens gebruikt zou dit kunnen leiden tot een fatal error waardoor het script zal stoppen). Gebruik je $_SERVER['DOCUMENT_ROOT'] misschien bij het pad voor de logfile? Zou goed kunnen aangezien je aan het einde van de for-loop in je logfile schrijft, en als het daar dus fout gaat stopt het ermee.
-
27-03-2011, 21:06 #12
64BitsWebhosting.EU
- Berichten
- 2.085
- Lid sinds
- 18 Jaar
Re: Hulp bij een XML Import Cronjob
Je kunt uiteraard ook even via ssh inloggen, de job aankicken en kijken wat er mis gaat..?
-
28-03-2011, 17:11 #13
- Berichten
- 1.899
- Lid sinds
- 18 Jaar
Re: Hulp bij een XML Import Cronjob
Heb geen toegang tot de SSH op die server, maar kan het inderdaad eens laten doen :)
@Peter, alles is zichtbaar in de voorbeeld code, behalve de precieze SQL query en de locatie van de files (overal absolute paden).
-
30-03-2011, 12:50 #14
- Berichten
- 1.499
- Lid sinds
- 17 Jaar
Re: Hulp bij een XML Import Cronjob
Wellicht dat je met de host even kunt kijken in de logging?
-
30-03-2011, 12:52 #15
- Berichten
- 1.899
- Lid sinds
- 18 Jaar
Re: Hulp bij een XML Import Cronjob
Heb gisteren en vandaag contact gehad met de host. Maar uitgaande van hun bevindingen zou de cronjob probleemloos uitgevoerd worden, maar dit is natuurlijk niet het geval.
Dus, nog suggesties?
/Edit: toch maar de wget als laatste mogelijkheid dan.
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