[ k4rl0 @ 23.06.2010. 12:28 ] @
Pozdrav,

Intereserira me ukoliko bi pokusao napraviti nesto tipa www.meebo.com koje sve tehnologije bi mi trebale ?
U principu znam da bi front-end bio HTML-CSS, JavaScript i PHP, a u back-endu npr. C ili C++.
Sto me konkretno zanima je na koji nacin bi uspostavio vezu izmedju PHP-a i C-a/C++a.
Pretpostavljam da je Meebo napravljen tako da C/C++ koriste neki library za instant messaging, a PHP podatke dohvaca od njih te ih samo prikazuje na ekranu.
Moje pitanje je ako to tako funkcionira kako uspostaviti vezu PHP<-->C/C++ , a ako ne funkcionira na taj nacin volio bi da mi netko objasni na koji nacin funkcionira ?

Hvala lijepo na svakom odgovoru.
[ Goran Rakić @ 23.06.2010. 12:34 ] @
Radio sam slično, napisao server u C-u koristeći libpurple koji priča razne IM protokole, čuva stanje i isporučuje poruke. U ovom primeru server je držao posebnu nit za svaki IM nalog (sistem je obrađivao samo par naloga koji su primali i slali puno poruka) i sve poruke su beležene u MySQL bazu kroz MySQL C API. Za nešto kao što je meebo.com verovatno je bolje imati živi message queue i epool server, a bio bi potreban i neki event queue za dodavanje prijatelja.

Server je slušao na TCP portu i omogućavao da se na njega nakači klijent i pošalje mu komande (kako su primljene poruke išle u bazu ja sam imao samo SEND/LIST/ADD/...). Onda sam se iz PHP-a socket funkcijama kačio na server da pošaljem komande i na MySQL da pokupim poruke. Na kraju u PHP-u sam napisao API omotač oko tih socket funkcija i upita tako da se dobije lep objektni interfejs za preuzimanje i slanje poruka, upravljanje kontaktima i stanjem.
[ k4rl0 @ 23.06.2010. 13:11 ] @
Hvala puno na odgovoru :)

Dakle sve se u principu svodila na to da C sa MySQL API-jem pise u bazu poruke dok ih PHP nakon toga procita i ispisuje na ekran ?
Nije li to malo neprakticno ? I nije li moglo to biti izvedeno na nacin da se sve odvija na razini PHP-MySQL bez C-a .. ?

Hvala, puno mi je jasnije ;)
[ Goran Rakić @ 23.06.2010. 13:29 ] @
Moraš ostati prijavljen na IM i između dva HTTP zahteva. Nešto mora da sluša i redovno čita sa socketa u protivnom IM server će ti prekinuti vezu. To nešto treba da omogući PHP-u povremenu interakciju od zahteva do zahteva. To nešto može da bude i PHP, Python,... libpurple je C biblioteka koja omogućava povezivanje na razne IM protokole pa mi je to bilo najzgodnije da koristim.

Server ne mora da čuva poruke u MySQL-u. Ja sam imao scenario da je PHP pružao admin panel za povremeni pregled poruka, a IM nalog je primao stotine poruka dnevno. Zato mi je bilo važno da server poruke zabeleži za stalno, pa admin kada naiđe pogleda šta je zabeleženo i odgovori. Ako imaš živu aplikaciju server može da privremeno pamti i isporučuje samo nove poruke ili da poruke smešta u neki FIFO queue pa odatle polako da prazniš, da l' prema PHP-u ili prema bazi, kako ti je volja.