Jump to content
php.lv forumi

Recommended Posts

Posted

Intresanta un noderīga lieta ir socket serveri, pieņem un atbild uz pieprasijumiem, kad tie nepieciešami dinamiskā vidē ietaupa traffiku...

 

Uz php viens primitīvs pimērs ir.. Zend lapā

 

Jautājums, vai ar PHP kāds tādas lietas ir taisijis, vai tomēr prieksroka ir perl/java/u.c. socket serveriem?

Posted

Taisot savādākiem līdzekļiem, lai iegūtu savaigāku informāciju vajag vislaik atjaunot datus(pieprasīt jaunus) tas taču ir lieks traffiks..

 

Taīsīt uz php vai citām valodām ir kāda būtiska atšķirība?

Un kā var palaist php kā cgi laikam, lai nav jāizmanto kā zem apache moduļa... ?

Posted (edited)
Taisot savādākiem līdzekļiem, lai iegūtu savaigāku informāciju vajag vislaik atjaunot datus(pieprasīt jaunus) tas taču ir lieks traffiks..

Un kāda atšķirība no šī būs lietojot soketus? Praktiski jebkurš HTTP serveris taču arī veidots izmantojot soketus.

 

Īpaši atšķirība no dažādām valodām nav, ja nu vienīgi jāimplementē algoritmi, kas patērē daudz resursu skaitļošanai. Tad labāk izvēlēties kompilējamu valodu.

PHP cgi var palaist vienkārši - Windows distribūcijai php.exe fails (php-cgi.exe zem php4). Zem linux neatceros kā, bet pamēģini vienkārši php.

Edited by bubu
Posted

Palaist sanāca kā cgi, viss cits ar apmēram skaidrs, bet ir viena problēma, man sockert serveris noslogo procesoru diezgan lielā daudzumā.

 

Es taisu pēc zend parauga, varbū tur kāda vaina ?

Posted

Nu Zend paraugā it kā ir normāli, noslodzei nav jābūt lielai, ja nenotiek īpaši daudz datu pārraide.

 

Varbūt tu pateiksi, kāpēc tavuprāt šādi veidots datu servēšanas veids ir labāks, nekā izmantojot parastu http get/post pieprasījumu?

Posted

Spēlēm, citām tiešsaites lietām, nevajag katru reizi pārbaudīt vai ir jauna informācija lapā attēlota...

 

Kā es novēroju, tad procesora noslodze pieeaug tad, kad es izdzlēdzu savu client programmu(paliek neatvienojusies no socket servera) vai to var salabot no servera puses ?

Posted

es vienreiz caur flash ar actionscript veidoju chatu... socket serveris ieksh php... un itkaa viss norm.. bet kad gribeeju developeet visu talaak.. atduuros pret stabu...

PHP vienaa laikaa var pildiit tikai vienu uzdevumu... bet ja vajag vairaakus tad var lek uz ezha..

Lasiijos netaa, citi arii teica, ka php var izmantot, bet nekas jaudiigs nebus un ieteica vismaz python... tad nu kopsh taa laika paartraucu un taa veel nesmu uztaisiijis to socket serveri ar c/c++ :) Laika nav utt.. un pie tam sava hobija peec tas ir bishk pa daudz, nedaudz velaak varbuut istenoshu...

Posted

Atradu problēmu, bet nezinu kā labot, no zend koda izgreizu šo rindiņu:

if ($input == null) {
               // Zero length string meaning disconnected
               unset($client[$i]);
           }

 

Bet ar to ir problēma, ja vairāki klienti pievienojušies un viens sūta datus, citus tajā brīdī atvieno, jo viņi neko nesūta...

 

Kā lai to salabo?

 

 

Sākumā jau var uz php, ja tā lieta sanāks tīri smuka, tad jau varēs domāt socket servera izveidi uz piemērotākas valodas, tikmēr nav laika apgūt citas valodas...

Posted
  PHP vienaa laikaa var pildiit tikai vienu uzdevumu... bet ja vajag vairaakus tad var lek uz ezha..

Zem Linux var lieot POSIX threadus, tādējādi veidojot vairākprocesu programmu. Zem Windows gan nekas tāds nesanāks.

Posted (edited)
Kā es novēroju, tad procesora noslodze pieeaug tad, kad es izdzlēdzu savu client programmu(paliek neatvienojusies no socket servera) vai to var salabot no servera puses ?

Parādi kodu, kā lai zin kā tu tur esi visu saveidojis :)

 

Spēlēm, citām tiešsaites lietām, nevajag katru reizi pārbaudīt vai ir jauna informācija lapā attēlota...
Ā nu ne-webiskām (lapām) tas tiešām der.

 

Bet ar to ir problēma, ja vairāki klienti pievienojušies un viens sūta datus, citus tajā brīdī atvieno, jo viņi neko nesūta...

Nesapratu. Kādā rakā tu tur citus klientus atvienu, ja viņi nesūta neko?

Edited by bubu
Posted
Nesapratu. Kādā rakā tu tur citus klientus atvienu, ja viņi nesūta neko?

 

Apskaties to zend kodu, man no tā nekas būtisks neatšķirās tikai atbildes funkcijas saveidoju, bez kurām ir tā pati problēma..

 

Tur ir uztaisīts, ja kāds klients nesūta neko, bet cits sūta, ciņu izņem no $client Array, bet ja viņš nav $client Array ielikts vispār, tad viņa soccket atvieno.

×
×
  • Create New...