Exécution automatique d'un script PHP
Bonjour,
J'ai un script php qui se lance automatiquement chaque jour via la commande crontab. et depuis quelques jours ca ne marche pas, en fait ca lance le script mais j'ai un problème dans le script qui lui empêche à exécuter correctement.
En plus, quand j’exécute le script depuis le navigateur tout marche normale.
Merci pour votre aide ?
CODE CRONTAB :
Code:
30 9 * * 1-5 /home/offresapec.sh > /home/offresapec.log
quand je regarde le fichier log, j'ai le message suivant :
Code:
Fatal error: Call to a member function xpath() on a non-object in /home/www/web/updatedatabase.php on line 458
lignes de code correspond à ça :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| // on récupère les données des offres
$aOffres = array();
foreach($xml->xpath('//item') as $oItem) {
// récupère l'url
$url = (string)current($oItem->xpath('link'));
// récupère l'id depuis l'url (l'identifiant semble délimité par __ à gauche et à droite)
// on peut utiliser les fonctions de chaînes normales car l'URL n'est a priori composée que de caractères ASCII
$id = trim(substr($url, strpos($url, '__'), strrpos($url, '__') - strpos($url, '__')), '_');
$aOffres[$id]['url'] = $url;
$aOffres[$id]['id'] = $id;
$aOffres[$id]['titre'] = lower_titre((string)current($oItem->xpath('title')));
$aOffres[$id]['description'] = (string)current($oItem->xpath('description'));
$sDate = (string)current($oItem->xpath('pubDate')); // date au format RFC 2822 : Tue, 17 Mar 2009 00:00:00 +0100
$sDate = date('Y-m-d', strtotime($sDate));
$aOffres[$id]['pubDate'] = $sDate;
$aOffres[$id]['lieu'] = (string)current($oItem->xpath('lieu'));
$aOffres[$id]['entreprise'] = (string)current($oItem->xpath('entreprise'));
$aOffres[$id]['typeContrat'] = (string)current($oItem->xpath('typeContrat'));
$aOffres[$id]['remuneration'] = (string)current($oItem->xpath('remuneration'));
$aOffres[$id]['salMin'] = (string)current($oItem->xpath('salMin'));
$aOffres[$id]['niveauExp'] = (string)current($oItem->xpath('niveauExp'));
// on calcule la pertinence de l'offre selon le nom de l'entreprise, le titre et la description de l'offre
$pertinence_auto = calculePertinenceAuto(
$aOffres[$id]['entreprise'],
$aOffres[$id]['titre'],
$aOffres[$id]['description']
);
$aOffres[$id]['pertinence_auto'] = $pertinence_auto ? '1' : '2';
//echo "<li>" . $aOffres[$id]['pertinence_auto'] . " : " . $aOffres[$id]['titre'] . "</li>";
// s'il n'y a pas de listeLieux, disons que c'est une offre "International"
if (count($oItem->xpath('listeCodeLieux')) == 0) {
$aOffres[$id]['lieu'] = 'International';
}
// sinon, on récupère le libellé de région/pays
else {
$oListeCodeLieux = $oItem->listeCodeLieux;
unset($codeslieux);
foreach($oListeCodeLieux->codeLieu as $codeLieu) {
$codeslieux[] = (string)current($codeLieu);
}
$aOffres[$id]['lieu'] = getRegionEnvirojobFromListeCodesApec($codeslieux);
}
$aOffres[$id]['secteurActiviteCode'] = (string)current($oItem->xpath('secteurActivite/code'));
$aOffres[$id]['secteurActiviteIntitule'] = (string)current($oItem->xpath('secteurActivite/intitule'));
$aOffres[$id]['codeJobCode'] = (string)current($oItem->xpath('codeJob/code'));
$aOffres[$id]['codeJobIntitule'] = (string)current($oItem->xpath('codeJob/intitule'));
} |