Le 29/05/2014 17:14, Cédric Morin a écrit :
JLuc a écrit :
- Il y a mention d'un délai, et non d'un time.
Justement, cette notion de délai tel qu'interprété par ta fonction pose des problèmes pour être un argument d'entrée
d'une API : si deux appels successifs à la fonction sont réalisés par un même processus ou par des processus concurents
> on n'aura pas le même résultat, ce qui est un peu embêtant pour du web où l'on passe son temps à faire les choses
> dans des processus concurrents…
Oui en effet. La fonction, étant locale au processus appelant, ne gère pas les interférences avec des appels similaires éventuellement faits par les autres N processus concurrents. Ça fait comme si il y avait N files indépendantes, chacune considérant les autres comme un bruit de fond.
Mais même si c'était centralisé dans SPIP, il y aurait des files de jobs ailleurs, dans d'autres process systèmes ou applicatifs ne passant pas par SPIP. Peut-être ce n'est pas suffisamment important ou utile mais il me semble que la notion de délai a tout de même du sens localement. Le "résultat" attendu ici, c'est ni le moment exact, ni l'ordre d'exécution des tâches relativement à celles de processus différents, mais des délais à respecter avec les autres jobs envoyés par la même fonction :
"Applique cette fonction dés que possible (si délai=0) OU préserve un délai de tant de secondes après le précédent job appelé par cette fonction avant de l'exécuter (dans la 2eme version proposée) (ou après l'avoir exécuté, selon la 1ère version du carnet SPIP)."
Mais ici, elle ne fonctionne que si SPIP utilise mysql, puisque ne passe pas par les API SQL de SPIP, ce qui là aussi
est limitant pour en faire un point d'entrée d'une API
> Au passage, les échappements de ta requête SQL ne sont pas tout a fait complets ni exacts - ce qui démontre aussi
> l'intérêt d'utiliser l'API SQL de SPIP.
L'intérêt de l'API SQL de SPIP n'est plus à démontrer pour les codes des plugins 
Mais les API connues de SPIP sont des API *pour SPIP*, pas pour des programmes php NON SPIP ! (à moins que le truc en .../api/... )
Il manque des échappements sur $function et $inclure, et le md5($arguments) est
fait après échappement, ce qui ne donne pas forcement le bon résultat.
OK, j'ai corrigé sur le carnet Spip.
JLuc