Upload multi fichiers multi client

Signaler
Messages postés
148
Date d'inscription
lundi 12 février 2007
Statut
Membre
Dernière intervention
9 novembre 2013
-
Messages postés
148
Date d'inscription
lundi 12 février 2007
Statut
Membre
Dernière intervention
9 novembre 2013
-
Bonjour à tous,

J'ai dévellopé une chaine d'upload encodage et indexation pour un serveur apache php mySQL. Ca fonctionne comme il suit:

Une page web permet de choisir à uploader le fichier. Elle mène à une seconde qui met une entrée dans une base de donnée "à encoder"
J'ai un script php qui est lancé au démarrage du pc par un .bat et qui vérifie toutes les 10 secondes si il y a une entrée dans la base "à encoder" , si c'est le cas, ça encode et indexe dans la base de donnée finale.

J'ai terminé ce truc, qui marche à merveille, mais d'un coup je réalise quelque chose qui me plonge dans le désespoir.... J'ai l'impression que si plusieurs clients uploadent en même temps un fichier, ils doivent le faire chacun leur tour... Comme je dois pouvoir accepter des gros fichiers (max 300Mo), il y en a qui risquent d'attendre longtemps si ils sont plusieurs...

J'ai lu un truc sur le multithread en php, mais ça m'a l'air diablement compliqué. J'ignorais tout du php mySQlL au début septembre donc je reste un gros newbie qui appréhende d'avoir à faire ce genre de trucs, surtout quand je viens de finir.

Alors je poste sur phpcs, plein d'espoir pour qu'une bonne âme me dise: "mais non, il suffit de faire ça pour résoudre ton problème.."

Vous avez une suggestion svp?

2 réponses

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Hello,

je n'ai RIEN compris à ton problème :-) En fait, je n'ai pas compris le fonctionnement de ton script, et du coup, je ne pige pas pourquoi tu aurais un problème de concurrence sur tes upload.
Tu peux détailler un peu, stp ?
Messages postés
148
Date d'inscription
lundi 12 février 2007
Statut
Membre
Dernière intervention
9 novembre 2013

J'ai cru comprendre au niveau de la théorie et me rendre compte dans les faits que si j'envoie plusieurs fichiers depuis plusieurs clients sur mon serveur (en http) ils font la queue, ils doivent attendre leur tour pour que leur fichier uploade réellement, car il ne peut y avoir qu'un upload à la fois.

 J'ai aussi lu un papier sur le multithread, en php, qui consiste à (attention pas sûr de ce que je dis:) lancer un process par client, histoire de gérer simultanément plusieurs clients pour certaines fonctions (comme l''upload?). Je peux constater l'enchaînement des uploads car le log (créé lorsqu'on commence l'upload, ne se crée que lorsque le fichier précédent à été uploadé.

Pour info, je me suis basé sur cette source comme point de départ, et je l'ai amélioré de cette façon:

-au lieu d'effectuer toutes les tâches (upload, encodage, indexation), le site gère l'upload, et indexe temporairement la vidéo comme étant 'à encoder'.
- un script php lancé par un .bat et fonctionne comme service windows (il tourne en boucle) regarde dans la base mySQL 'à encoder' et si il y a des nouvelles vidéos indéxées dans cette base, il les encode, les envoie sur d'autres serveurs (streaming & miniatures) et les indexe dans la base de données définitive.

C'est la première partie qui pose ici problème. J'espère que c'est plus clair, et merci pour le coup de main :)