PHP: pristup k sietovemu socketu medzi instanciami skriptu

Programovacie jazyky, rady, poradňa...
Mek
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4661
Registrovaný: 23 mar 2005, 23:00
Bydlisko: ZA <-> TN
Kontaktovať používateľa:

PHP: pristup k sietovemu socketu medzi instanciami skriptu

Príspevok od používateľa Mek »

Zdravim, pisem jeden skript, kde otvaram sietovy socket takto:

Kód: Vybrať všetko

$fp=pfsockopen($adresa, $port, $errno, $errstr, 15);
no a potrebujem manipulovat s premennou $fp aj v inej instancii toho isteho skriptu.
Priklad - spustim len skript.php, kde bude spusteny uvedeny kod, tj. premennej $fp sa priradi ukazovatel na pripojenie.
Potom spustim skript.php?akcia=odpoj spusti sa sice ten isty subor, ale uplne ina jeho cast. Kedze sa jedna o inu instanciu (spustenie) skriptu, tak premenna $fp v nej nebude dostupna. Ale ja ju tam potrebujem, aby som mohol korektne uzavriet spojenie $fp aj na urovni protokolu, ktory pouzivam. Pricom povodny skript stale bezi, prijima a posiela data cez toto pripojenie (u klienta to odchytavam cez javascript - teda ajax)
Skusal som priradenie

Kód: Vybrať všetko

$_SESSION['fp']=&$fp;
hned po volani pfsockopen, ale to sa zda byt blbost, lebo to nefunguje...
Hladal som aj na googli aj na php.net, no nic pouzitelne. Na php.net to jeden clovek celkom slusne popisal ako persisting connections across script executions. V mojom kode sice vytvaram persistentne pripojenie (pfsockopen), ale ziadany efekt to nema.
Poznate niekto nejaky sposob, kam si umiestnit ukazovatel na vytvorene spojenie, aby bolo dostupne aj v inych instanciach toho isteho skriptu, prip. v uplne inych skriptoch?
lammer
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2098
Registrovaný: 24 apr 2004, 18:45
Kontaktovať používateľa:

Príspevok od používateľa lammer »

to je velmi zvlastne ze to nejde pretoze prave pfosk je perzistentne a robi presne to co chces.
a celkom zvlastne je ze mne to ide a tebe nie, inicializujem to rovno v tom a neni problem, normalne je $fp registrovana.
neviem kde mas prob, ake php pouzivas?
ja mam 5.2.3
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Php máš ako modul v Apache? (alebo ho používaš ako CGI)
lammer
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2098
Registrovaný: 24 apr 2004, 18:45
Kontaktovať používateľa:

Príspevok od používateľa lammer »

chrono napísal:Php máš ako modul v Apache? (alebo ho používaš ako CGI)
tiez dobra otazka, a dalsia: pouzivas apache alebo iny httpd
Mek
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4661
Registrovaný: 23 mar 2005, 23:00
Bydlisko: ZA <-> TN
Kontaktovať používateľa:

Príspevok od používateľa Mek »

pouzivam Apache, podrobnejsie info na

Kód: Vybrať všetko

http://www.mk7.wz.sk/phpinfo.php
takze hovorite, ze pfsockopen takto mozno udrzat... ok...
takze staci, ked pouzijem v tej druhej instancii skriptu premennu $fp, tak bude ukazovat na to iste spojenie, ktore som predtym vytvoril?
lammer
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2098
Registrovaný: 24 apr 2004, 18:45
Kontaktovať používateľa:

Príspevok od používateľa lammer »

Mek napísal:pouzivam Apache, podrobnejsie info na

Kód: Vybrať všetko

http://www.mk7.wz.sk/phpinfo.php
takze hovorite, ze pfsockopen takto mozno udrzat... ok...
takze staci, ked pouzijem v tej druhej instancii skriptu premennu $fp, tak bude ukazovat na to iste spojenie, ktore som predtym vytvoril?
pokial si ju prenesies napriklad cez session mozes ju volat kde chces. ja som to skusal a ide to perfektne.
neviem preco zrovna tebe nie, mozno robis niekde chybu len neviem aku
Mek
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4661
Registrovaný: 23 mar 2005, 23:00
Bydlisko: ZA <-> TN
Kontaktovať používateľa:

Príspevok od používateľa Mek »

ok, takze staci si ju priradit do session... ma tam byt aj znak & (pass by reference)? tipujem ze ano, len tak pre istotu sa pytam :)
kurna uz asi viem preco to neslo, zabudol som davat na zaciatku kazdeho skriptu session_start() ach moja hlava derava :lol:
thx za pomoc
lammer
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2098
Registrovaný: 24 apr 2004, 18:45
Kontaktovať používateľa:

Príspevok od používateľa lammer »

Mek napísal:ok, takze staci si ju priradit do session... ma tam byt aj znak & (pass by reference)? tipujem ze ano, len tak pre istotu sa pytam :)
kurna uz asi viem preco to neslo, zabudol som davat na zaciatku kazdeho skriptu session_start() ach moja hlava derava :lol:
thx za pomoc
:) samozrejme ze pouzivat na to referenice, vytvarat novu registraciu by bola hlupost
Mek
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4661
Registrovaný: 23 mar 2005, 23:00
Bydlisko: ZA <-> TN
Kontaktovať používateľa:

Príspevok od používateľa Mek »

no, teraz som mal konecne moznost sa tomu trochu venovat, tak som dal priamo na zaciatok skriptu session_start(); a sietove spojenie som otvaral rovno takto:

Kód: Vybrať všetko

$_SESSION['fp']=pfsockopen($adresa, $port, $errno, $errstr, 1500);
No v dalsej instancii tohoto isteho skriptu ako keby premenna $_SESSION['fp'] neexistovala. V tejto instancii spustam nasledovne prikazy

Kód: Vybrať všetko

	$_SESSION['pripojene']='nie';
    fputs($_SESSION['fp'],'$Quit|');
    fclose($_SESSION['fp']);
    echo '*** Odpojené';
a vysledkom je
<br />

<b>Warning</b>: fputs(): supplied argument is not a valid stream resource in <b>/www/5/site14925/wwwroot

/MekDC/klient.php</b> on line <b>129</b><br />

<br />

<b>Warning</b>: fclose(): supplied argument is not a valid stream resource in <b>/www/5/site14925/wwwroot

/MekDC/klient.php</b> on line <b>130</b><br />

*** Odpojen
nejake napady co s tym? :?


//edit: toto som skusal na serveri php5.cz, ked som to spustil na wz.sk (povodny server), tak to pri odpajani nic nerobilo, ako keby sa ten skript zacyklil... (videl som ten post request cez firebug), ale nemal sa kde zacyklit, ved mal spustit len odpojenie socketu :?
lammer
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2098
Registrovaný: 24 apr 2004, 18:45
Kontaktovať používateľa:

Príspevok od používateľa lammer »

urci tam premennu a tu prirad potom k session ako referenciu.
fputs vyzaduje treti parameter velkost, daj tam 4096
fclose potom asi pojde tiez snad
Mek
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4661
Registrovaný: 23 mar 2005, 23:00
Bydlisko: ZA <-> TN
Kontaktovať používateľa:

Príspevok od používateľa Mek »

urobil som to tak, no zial nepomohlo...
no nic, diky za tvoju trpezlivost, asi sa na to na cas vykaslem...
lammer
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2098
Registrovaný: 24 apr 2004, 18:45
Kontaktovať používateľa:

Príspevok od používateľa lammer »

pockaj ved to treba poriesit. ukaz ako to mas a co ti to presne ne/robi, k vysledku sa spolu dopatrame, treba trosku trpezlivosti
Mek
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4661
Registrovaný: 23 mar 2005, 23:00
Bydlisko: ZA <-> TN
Kontaktovať používateľa:

Príspevok od používateľa Mek »

mno, ked sa ti chce rypat v mojom extra-neprehladnom zdrojaku, tak nech sa paci :lol:
ma ist o web-based klienta pre siet DC (daco ako je cgiirc), cisto na chat. Pripojenie funguje, ale odpojenie nie. Zatial som to skusal len na Verlihube, tak ak to budes skusat, tiez si vyber hub, ktory bezi na Verlihube. Skript sa pripoji pod nickom testttt
inac tato zalezitost nesuri, mam co robit aj okrem toho :wink:
(vid priloha)
Prílohy
MekDC.rar
(4.43 KiB) 61 stiahnutí
lammer
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2098
Registrovaný: 24 apr 2004, 18:45
Kontaktovať používateľa:

Príspevok od používateľa lammer »

tos sorry ale s dc sa hrat cas fakticky nemam
chut uz duplom nie, snad sa najde niekdo ochotnejsi
roman3x
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 448
Registrovaný: 02 nov 2005, 18:30
Kontaktovať používateľa:

Príspevok od používateľa roman3x »

ak to niekomu niekde inde ide a tebe nie, najskor by som hladal problem v nastaveni serwea ;-) na freehostoch sa casto niektore funkcie vypinaju, tak si to skus rozbehat najskor doma
Napísať odpoveď