par
damien_55 » 25 juin 2014, 09:44
Bonjour a tous,
J'ai une table d'événements classé par ville. Pour effectuer la mise a jour des événements (évenements en cours et événements en cours), je lance un cron tous les jours a 00h30. Ce dernier a plusieurs taches:
Pour accélerer le temps de réponse du serveur, je stocke dans une table cache_event les résultats calculés (les 6 prochains événements en cours ou a venir).
Donc, mon cron a pour tache de:
1/ effacer les données dans la table cache_city_evt
2/ Sortir les événements en cours ou a venir dans la limite de 6 et ce pour chaque ville
3/ Inserer ces données dans la table cache_event
Mon script actuel etant en php, et etant recurrent, au vu du nombre de ville et d'événement, je souhaite savoir si je peux faire cette tache en utilisant le programmateur d'évenement mysql.
J'ai lu pas mal de doc, mais je ne trouve que des update ou des actions simples comme tutos.
Voici en gros mon script php:
//Selection de la ville
$requete = "SELECT id, Code_ville FROM table_ville WHERE Code_ville NOT LIKE ''";
$resultat = mysql_query($requete);
while ($blog=mysql_fetch_array($resultat,MYSQL_ASSOC)) {
$i = 0;
// Selection des evenement en cours ou a venir en fonction de la ville
$events = mysql_query("SELECT event_sale.id as events_id, event_sale.name, DATE(event_sale.validFrom) as start_event, DATE(event_sale.validTo) as end_event
FROM `event_sale`
WHERE (event_sale.mid_place LIKE '".addslashes($blog['Code_ville'])."')
AND ((DATE(event_sale.validFrom) <= DATE (NOW()) AND DATE(event_sale.validTo) >= DATE (NOW()) )
OR (DATE(event_sale.validFrom) >= DATE (NOW()) AND DATE(event_sale.validTo) >= DATE (NOW()) )
AND active='1'
ORDER by event_sale.validTo ASC LIMIT 8");
// stockage des résultats dans un array
while($event = mysql_fetch_array($events)) {
$content['events'][$i]['title_event'] = stripslashes($event['name']);
$content['events'][$i]['start_event'] = $event['start_event'];
$content['events'][$i]['end_event'] = $event['end_event'];
$content['events'][$i]['sortie'] = 'Rsortie-'.$i.'-'.$blog['Code_ville'];
$i++;
//insertion en base de données de chaque résultat
@mysql_query("INSERT INTO `cache_city_evt` (`ref_type`,`name_event`,`type`,`ref_city`,`start_event`,`end_event`
) VALUES (
'".mysql_real_escape_string($content['events'][0]['sortie'])."',
'".mysql_real_escape_string($content['events'][0]['title_event'])."',
'sortie',
'".mysql_real_escape_string($blog['Code_ville'])."',
'".mysql_real_escape_string($content['events'][0]['start_event'])."',
'".mysql_real_escape_string($content['events'][0]['end_event'])."'
) ON DUPLICATE KEY UPDATE
`name_event`='".mysql_real_escape_string($content['events'][0]['title_event'])."',
`type`='sortie',
`ref_city`='".mysql_real_escape_string($blog['Code_ville'])."',
`start_event`='".mysql_real_escape_string($content['events'][0]['start_event'])."',
`end_event`='".mysql_real_escape_string($content['events'][0]['end_event'])."'
") or die("Erreur MySQL : ".mysql_error());
...etc...
}
}
Mon soucis est que je ne trouve pas d'exemple sur l'utilisation du programmateur d'evenement pour ce type d'action, est ce possible ?
Merci pour votre aide.
Bonjour a tous,
J'ai une table d'événements classé par ville. Pour effectuer la mise a jour des événements (évenements en cours et événements en cours), je lance un cron tous les jours a 00h30. Ce dernier a plusieurs taches:
Pour accélerer le temps de réponse du serveur, je stocke dans une table cache_event les résultats calculés (les 6 prochains événements en cours ou a venir).
Donc, mon cron a pour tache de:
1/ effacer les données dans la table cache_city_evt
2/ Sortir les événements en cours ou a venir dans la limite de 6 et ce pour chaque ville
3/ Inserer ces données dans la table cache_event
Mon script actuel etant en php, et etant recurrent, au vu du nombre de ville et d'événement, je souhaite savoir si je peux faire cette tache en utilisant le programmateur d'évenement mysql.
J'ai lu pas mal de doc, mais je ne trouve que des update ou des actions simples comme tutos.
Voici en gros mon script php:
[php]
//Selection de la ville
$requete = "SELECT id, Code_ville FROM table_ville WHERE Code_ville NOT LIKE ''";
$resultat = mysql_query($requete);
while ($blog=mysql_fetch_array($resultat,MYSQL_ASSOC)) {
$i = 0;
// Selection des evenement en cours ou a venir en fonction de la ville
$events = mysql_query("SELECT event_sale.id as events_id, event_sale.name, DATE(event_sale.validFrom) as start_event, DATE(event_sale.validTo) as end_event
FROM `event_sale`
WHERE (event_sale.mid_place LIKE '".addslashes($blog['Code_ville'])."')
AND ((DATE(event_sale.validFrom) <= DATE (NOW()) AND DATE(event_sale.validTo) >= DATE (NOW()) )
OR (DATE(event_sale.validFrom) >= DATE (NOW()) AND DATE(event_sale.validTo) >= DATE (NOW()) )
AND active='1'
ORDER by event_sale.validTo ASC LIMIT 8");
// stockage des résultats dans un array
while($event = mysql_fetch_array($events)) {
$content['events'][$i]['title_event'] = stripslashes($event['name']);
$content['events'][$i]['start_event'] = $event['start_event'];
$content['events'][$i]['end_event'] = $event['end_event'];
$content['events'][$i]['sortie'] = 'Rsortie-'.$i.'-'.$blog['Code_ville'];
$i++;
//insertion en base de données de chaque résultat
@mysql_query("INSERT INTO `cache_city_evt` (`ref_type`,`name_event`,`type`,`ref_city`,`start_event`,`end_event`
) VALUES (
'".mysql_real_escape_string($content['events'][0]['sortie'])."',
'".mysql_real_escape_string($content['events'][0]['title_event'])."',
'sortie',
'".mysql_real_escape_string($blog['Code_ville'])."',
'".mysql_real_escape_string($content['events'][0]['start_event'])."',
'".mysql_real_escape_string($content['events'][0]['end_event'])."'
) ON DUPLICATE KEY UPDATE
`name_event`='".mysql_real_escape_string($content['events'][0]['title_event'])."',
`type`='sortie',
`ref_city`='".mysql_real_escape_string($blog['Code_ville'])."',
`start_event`='".mysql_real_escape_string($content['events'][0]['start_event'])."',
`end_event`='".mysql_real_escape_string($content['events'][0]['end_event'])."'
") or die("Erreur MySQL : ".mysql_error());
...etc...
}
}
[/php]
Mon soucis est que je ne trouve pas d'exemple sur l'utilisation du programmateur d'evenement pour ce type d'action, est ce possible ?
Merci pour votre aide.