folder Tahribat.com Forumları
linefolder Asp - Php - Cgi - Perl
linefolder TCP Websocket PHP Sorunsalı[ÇÖZÜLDÜ]



TCP Websocket PHP Sorunsalı[ÇÖZÜLDÜ]

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    Hocalarım şöyle bir sorunum var.. TCP socket kullanıyorum(Kullanmak zorundayım) ve bu socket içerisinden gelen verileri fread(..) fonksiyonu ile okuyorum..

    Fakat 1 defa fread yapabiliyorum tek bir php dosyası içerisinde...

    Push Notification gibi düşünün.. Fread komutuna veri geldiğinde benim yazdığım kodlar calıssın istiyorum fakat yapamadım...

    Yani şöyle ki..

    $socket = stream_socket_client("tcp://....:$Port",$errno,$errstr, 5);
    
    if (!$socket){
        echo "$errstr ($errno)\n";
        exit();
    }
    $params = array(
        "username" => $password,
        "password" => $username
    );
    fwrite($socket, json_encode($params).STANZA_BREAK);
    $result = fread($socket, 4096);
    //echo $result;
    $result = json_decode($result);
    if($result->status != "success"){
        echo "LOGIN BASARISIZ: $result->status: $result->message\n";
        fclose($socket);
        exit();
    }
    
    
    
        $result = fread($socket, 4096);
        $result = json_decode($result);
        print_r($result);
    

    Buradaki kod bloğunda $result'u tek seferlik print ediyorum.. Yani socket'den gelen veriyi 1 defaya mahsus okuyorum... Bu dosya calıstıgında socket'den bana merhaba dünya geliyor.. Fakat Nasılsın diye bir veri daha geldiğinde onu ben recieve edemiyorum . Tekrar bu sayfayı yüklemem gerekiyor 2. veriyi almam için...

    Benim Fread fonksiyonunu asenkron çalıştırmam gerekiyor sanırım fakat çözemedim nasıl olacak gibisinden ...

    Istediğim şey şu...

    while(true)
    {
    $result=$fread($socket,4096);
    echo "<script>alert('Veri Geldi -> '".$."</script>
    }

    Burada her seferinde okuyorum ama Php tek sefer sayfayı yüklediğinden dolayı yemiyor...

     

    Şunu da denedim..

    <script>
            while(true)
            {
                console.log("Data GEdiliyor");
                $.ajax
                ({
                    type	: "POST",
                    async:   false,
                    url:'Socket.php',
                    success	:function(data)
                    {
                        alert(data);
    
                    }
                });
            }
    
    
    
    
        </script>

     

    Burda da Sonsuz döngüde o php dosyasını çağırıyorum.. Işim görülüyor. Ama Saçmalığın daniskası bu yaptığım işlem :((( Benim ne yapmam gerekiyor ?? 

    Umarm anlatabilmişimdir derdimi..

    Iyi forumlar

    ÇÖZÜM 

    Arka planda bana gelen veriyi dinliyorum php script ile . Gelen verileri de bir başka socket'ile kendi serverıma post ediyorum..

    Bu şekilde veriyi işliyorum Ajax vs yazmadım arkada full time calsan bir script olacak.

    MhmdAlmz tarafından 24/Oca/17 15:54 tarihinde düzenlenmiştir

    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    pSkpt
    pSkpt's avatar
    Kayıt Tarihi: 10/Aralık/2010
    Erkek

    http://www.binarytides.com/php-socket-programming-tutorial/

    Aşağılara doğru Live Server kısmı var orayı incele.

    Bu PHP dosyasını direkt olarak web browserdan cağıramazsın. Browser tek bir istek yollar ve server o isteği yorumlayıp sana cevap döndürür.

    Sunucu üzerinden console'dan çağırman gerek.

    $ php /var/www/server.php

     

     


    İmza...
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    Ama bu php dosyasından gelen cevap benim X Sayfamı tetikleyecek . Ve bu sayfa içerisinde session işlemleri vs de var HTTP içerisinde çağırmam gerekiyor...

    Mesela ben Serverdan bildirim gönderdim buraya . Bu bildirimi de X Kullanıcının ekranında göstereceğim.. Fakat nasıl ? Sadece 1 kere yorumlanıyor.


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    pSkpt
    pSkpt's avatar
    Kayıt Tarihi: 10/Aralık/2010
    Erkek

    https://github.com/nekudo/php-websocket

    Javascript WebSocket ile sunucuna bağlanman gerekiyor.

    Sunucu ise direkt olarak o kullanıcıya mesaj yollayacaktır. Böylelikle canlı veri akışı sağlayabilirsin.

    WebSocket'ten gelen bilgiyi js ile işleyip ekrana bildirim de gösterirsin, oyun da oynatırsın.


    İmza...
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    Server dışarıda hocam Bir Verimor (Santral) deki websocket'i dinliyorum..

    Bu socketten bana koutlar geliyor bunu recieve edemiyorum..

    JavaScript ile bağlantı yok socket'e sadece php var sanırım. Zaten JavaScript ile bağlanamam çünkü kullanıcı adı ve şifre gözükür..


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    Anaaaa düşmüş 


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    YeniHarman
    YeniHarman's avatar
    Kayıt Tarihi: 17/Haziran/2012
    Erkek

    Dediğin iş bu şekilde olmaz (olmamalı). PHP buna uygun değil. Sana daemon lazım. Kimden nereye ne yollayacağını öğrensem fikir vereceğim ama neyse.

    while(true)
    {
    $result=$fread($socket,4096);
    echo "<script>alert('Veri Geldi -> '".$."</script>
    }



    Olaylara karışmayın!
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    YeniHarman
    YeniHarman's avatar
    Kayıt Tarihi: 17/Haziran/2012
    Erkek

    Dediğin iş bu şekilde olmaz (olmamalı). PHP buna uygun değil. Sana daemon lazım. Kimden nereye ne yollayacağını öğrensem fikir vereceğim ama neyse.

    while(true)
    {
    $result=$fread($socket,4096);
    echo "<script>alert('Veri Geldi -> '".$."</script>
    }

    https://stackoverflow.com/questions/3133209/how-to-flush-output-after-each-echo-call adresine bak yukarıda yazdığın için.

     


    Olaylara karışmayın!
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    şöyle son bir up olsun ... 


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
Toplam Hit: 977 Toplam Mesaj: 9
websocket