Question

J'ai un problème petit, et je suis sûr qu'il ya un moyen plus pratique / plus simple pour obtenir la solution, mais toutes les recherches sont jeter dans une place blancs au moment!

J'ai base de données mysql qui est régulièrement mis à jour par page php [via une tâche cron] cela ajoute ou supprime les entrées, selon le cas.

Mon problème est que je dois aussi vérifier si les détails [à savoir le numéro de téléphone ou similaires] pour l'entrée ont changé, mais le faire à chaque appel est impossible [non seulement ne me est semble être surpuissant, mais je suis limité par une limite d'appel api 3rd party] de plus ce n'est pas d'info critique.

Je pensais que ce serait peut-être préférable de vérifier simplement une entrée par appel page et itérer les lignes / entires avec chaque appel page successive.

Quelle serait la meilleure façon de le faire, à savoir garder la trace dont l'entrée / ligne dans la table que doit être vérifié suivante?

J'ai 2 idées de la façon de mettre en œuvre ceci:

1) L'identifiant de la ligne actuelle pourrait être enregistrer dans un fichier sur le serveur [sûrement pas la meilleure façon]

2) un champ booléen supplémentaire [check] est d'ajouter à la table, la valeur True sur la première entrée et faux à tous les autres. Ensuite, sur chaque page l'appeler; trouvailles « où l'enregistrement = TRUE » exécute la vérification de la mise à jour sur cette ligne, 'Check set = FALSE' 'Set [la rangée suivante] chèque = TRUE'

Si ce la meilleure façon de le faire, ou quelqu'un at-il mieux sugestion?

Merci d'avance!

.K

PS désolé pour le titre

Pas de solution correcte

Autres conseils

Je ne sais pas si cela est une bonne solution, mais si je dois faire des mises à jour tous les soirs massives, je vais écrire les mises à jour une nouvelle table vide, faites un SQL sélectionner pour joindre les tables et me dire où ils sont différents , puis faire une mise à jour SQL comme

UPDATE table, temptable
SET table.col1=temptable.col1, table.col2=temptable.col2 ......
WHERE table.id = temptable.id;

Vous pouvez stocker l'horodatage qu'une ligne est mis à jour en utilisant implicitement ON UPDATE CURRENT_TIMESTAMP [ http://dev.mysql.com/doc/refman/5.0/en/timestamp.html] ou explicitement dans votre mise à jour SQL. Ensuite, tout ce que vous devez faire est de sélectionner la ligne (s) avec le plus bas horodatage (en utilisant ORDER BY et LIMIT) et vous avez la ligne suivante à traiter. Tant que vous vous assurer que l'horodatage est mis à jour chaque fois.

par exemple. Dites que vous avez utilisé le champ last_polled_on TIMESTAMP pour stocker le temps que vous une ligne un sondage auprès de. Votre insert ressemble à:

INSERT INTO table (..., last_polled_on) VALUES (..., NOW());

Votre mise à jour ressemble à:

UPDATE table SET ..., last_polled_on = NOW() WHERE ...;

Et votre sélection pour la ligne suivante au sondage ressemble à:

SELECT ... FROM table ORDER BY last_polled_on LIMIT 1;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top