Avec erlang je règle le problème en 20 minutes et encore je suis large. Je viens de me prendre la tête 10 minutes pour imaginer une queue avec des accès concurrents en PHP synchrone sur du mutu avec une queue dans mysql, ça me semble faisable mais terriblement balourd à faire.
Il te faut, lors d'une attaque, empiler ton attaque sur ta pile, et attendre qu'elle soit résolue, donc attendre que les trucs empilés avant soient résolus aussi. C'est là que c'est galère car PHP ne peut faire que du polling avec un SELECT pour voir si l'action a été effectuée pour ensuite afficher le résultat. Mais qu'est-ce qui va résoudre l'action ? PHP peut attendre que son action ait atteint la fin de la pile : c'est à son tour. Il va donc lui-même résoudre l'action : ta queue peut donc ne contenir qu'un simple numéro d'attente comme à la poissonnerie à Leclerc. Une fois que c'est à son tour il résout l'action.
ça peut marcher mais c'est moche, pis t'as intérêt a avoir un serveur pas trop bas de gamme et a activer ingore_user_abort
La queue ne doit pas permettre les accès concurrents : quand c'est à son tour, php doit pouvoir être le seul à agir sur le système, donc tout le reste patiente, ça va être très lent.
quelqu'un a une meilleure idée, à part utiliser erlang ?
Il te faut, lors d'une attaque, empiler ton attaque sur ta pile, et attendre qu'elle soit résolue, donc attendre que les trucs empilés avant soient résolus aussi. C'est là que c'est galère car PHP ne peut faire que du polling avec un SELECT pour voir si l'action a été effectuée pour ensuite afficher le résultat. Mais qu'est-ce qui va résoudre l'action ? PHP peut attendre que son action ait atteint la fin de la pile : c'est à son tour. Il va donc lui-même résoudre l'action : ta queue peut donc ne contenir qu'un simple numéro d'attente comme à la poissonnerie à Leclerc. Une fois que c'est à son tour il résout l'action.
ça peut marcher mais c'est moche, pis t'as intérêt a avoir un serveur pas trop bas de gamme et a activer ingore_user_abort
La queue ne doit pas permettre les accès concurrents : quand c'est à son tour, php doit pouvoir être le seul à agir sur le système, donc tout le reste patiente, ça va être très lent.
quelqu'un a une meilleure idée, à part utiliser erlang ?