Php Mantık Sorusu

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

    Hocalarım Şimdi benim bir sayfam var 3 e böldüm bunu. Menü Header ve mainpage diye. mainpage orta kısım. ve sayfa değişiklikleri burda oluyor. Şimdi.. Header de bildirim kısmı logo vs vs var bu header kısmı tüm sayfalarda include edilmiş şekilde çağrılıyor sayfa yüklendiğinde. Header kısmındaki bildirim'i Ajax ile yaptım. Socket vs. yok . her 0.2 sn de bir VT de bildirim varmı sorgulatıyorum. Varsa göstertiyorum gibi.. Buraya kadar herhangi bir sıkıntı yok. Fakat ben bir sayfayı yeni açtığım anda yani AnaSayfadan menüler kısmındaki herhangi bir sayfaya tıkladığımda bana bildirimleri tekrar getirdiği için Bildirim sesi çalıyor. Header include edildiği için. Bunu ben nasıl çözebilirim ? Sayfa yüklendiği anda çalmasını istemiyorum. sadece bildirim geldiği anda gelsin istiyorum.. ama nasıl olcak ? :/ Bildirim sesi bildirim gelmesede sayfa değişikliklerinde çalıyor. menü kısmındaki bildirimler yüklenirken.. 


    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
    ★★★★
    Genki
    Genki's avatar
    Kayıt Tarihi: 24/Ağustos/2005
    Erkek

    Hocam öncelikle yapı cok sakat gibi duruyor, başlarda sıkıntı cıkartmayabilir ancak kullanıcı sayısı arttıkca başını ağrıtacaktır.

    sorununa gelecek olursak cookie veya session ile yapabilirsin diye düşünüyorum.

    veritabanından sorgu yaptıgın an yeni bildirim varsa onu alırsın, sonbildirim diye bir cookie oluşturursun ve gelen bildirimin id veya herhangi bir uniq değerini bu cookiye atarsın.

    sayfa değiştiği an tekrar ajax sorgulaması yapıldığı için aynı bildirim tekrar gelicek, ancak sen sonbildirim cookiesindeki id ile ajax sorgusundan gelen bildirimin idlerini karşılaştırırsın, tutuyorsa sesi çaldırmazsın

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

    Yapı neden sakat ? Cokkie mantığı güzelmiş. Teşekkürler onu deneyeceğim de bir şüphe oluştu içimde bunu demenle . Ne gibi sıkıntılar çıkarır bana ilerde ? ve hatam nedir ?


    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
    snnyk
    snnyk's avatar
    Kayıt Tarihi: 28/Mayıs/2007
    Erkek

    yüksek trafikli sitelerde sorgu çok olacağından mysql e yük bineceği için sakat demiş hocam.

    0.2 saniye makineli gini ateş eder 3-5 saniye yapsan daha rahatlar 

    bendede benzer bir sistem var önce kullanıcılar arası mesajlaşma olarak yapılmıştı ama sonradan anlık chate dönüştü ben yineden 5 saniyede bir ajax la check ediyorum 

    ses olayına gelirce eğer üyelik sistemine dahilse o kullanının mesajı görüp görmediğini db de tutman doğru olur 

    yok public bir sistem ise Genki hocanın dediği gibi session yada cookie ile kontrol etmen lazım 


    snnyk.com - code is poetry all that i know...
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    Bu programı maksimum 500 kişi kullanacak. Toplam kullanıcı sayısı bu . Mysql gene zorlanır mı ? ben pek sıkıntı olmaz diye düşündüm ama azaltabilirim 1 sn veya 2 saniyeye. Bildirim 2 sn geç gelse birşey olmaz sanırı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!
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Böcüklerin Efendisi
    krypt
    krypt's avatar
    Kayıt Tarihi: 05/Mart/2004
    Erkek

    Sorunun cevabı comet. Forever frame ya da long polling tekniklerini araştır. setInterval'le cekersin ama 0.2 sn falan çok kısa zaman aralığı. Herhangi bir problemden dolayı server o zaman aralığında cevap vermezse ne yapacaksın?

     

    krypt tarafından 15/Tem/16 11:57 tarihinde düzenlenmiştir

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

    WebSocket mantığı sanırım bu söyledikleriniz , comet haricinde.  Port dinleme olayları. eğer sunucuda veri eklendi ise şutla mesaja ? Doğru anladı isem. Bunların farkı nedir merak ediyorum bazıları Ajax kullanıp veri tabanından (DOĞRU POST) ile yani her seferinde verileri çekmek yerine. 1 sorgu ile veya bi algoritma ile yeni veri geldi mi ? Sorusunun cevabı ile ajax'ın cevap vermesi olayının daha verimli olduğunu söylüyor . Benim yanlışım her türlü veriyi getirtip okuyorum. Yani benim asıl yapmam gereken anladığım kadarı ile.

    Şuan chat sayfasında bulunan Mesaj miktarı. Örneğin 10 olsun.

    Ajax'a 10 u göndereceğim 

    Ajax'daki sonsuz bir döngü ile 10 dan büyük bir mesaj olduğu anda hemen cevap verdirme işlemini yapacağım.

    Ajax cevap verince yeni gelen mesajı'ı div'e basacağım. Yani bunu anladım ben aksi halde Port dinleyerek bir socket yazmam gerekiyor. 

     

    MhmdAlmz tarafından 15/Tem/16 12:14 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!
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    solstice
    solstice's avatar
    Kayıt Tarihi: 04/Nisan/2008
    Erkek

    Hocam bence nodejs kullanmaya bak. illede böyle kullanacaksan zaman aralığını 15 20 saniyelere kadar çek.

    Ayrıca ben 2 3 yıl öncesine kadar bi facebook uygulaması yazmıstım. dediğin şekilde bende ajax yenileme kullanmıştım 1  saniyeler felan bayağı bi problem olmuştu. 20 saniye için 200 300 kullanıcı sorun olmamıştı. ama 500 kullanıcı için bilmem. genede zamanı hiç yoksa 10 15 saniyeye çıkar öle bi gözlem yap. bildirimin 10 sn geçmesi sorun olmaz. Yinede yoğun işlemlerlede serverdan cevap dönmeyebilir.


    https://www.youtube.com/watch?v=k6LrGZGqYn8
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    @solstice , NodeJs bilgim SIFIR

     

    MhmdAlmz tarafından 15/Tem/16 12:17 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!
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ozgunlu
    ozgunlu's avatar
    Banlanmış Üye
    Kayıt Tarihi: 11/Kasım/2011
    Erkek

    Çok eski bir metot o.

    Longpolling terimi incele.

    Daha da güzel bir yapı için : http://elephant.io/ ' ya bakabilirsin. 

    Daha daha da güzeli, nodejs ile entegrasyon kur.

     

    Bir diğer opsiyon da Trigger yazabilirsin mysql' e. (Tavsiye etmem)

    Eğer mobil için service yazıyorsan, GCM ile broadcast yaparak client' dan istek attırabilirsin.

     

    Ek - 1 : Eğer illa böyle yapıcam diyorsan; flags adında bir tablo oluştur. Real time değişiklikler için 0-1 ile burada yap. Ve 0.2 saniye de poll ederken sadece bu tabloyu kontrol ettir.

    Ek - 2 : Node.js PHP entegrasyonu ile ilgili makale : https://entwickler.de/webandphp/integrating-node-js-with-php-125830.html 

    Ek - 3 : Node.js PHP entegrasyonu ile ilgili fikir vermesi için video : https://www.youtube.com/watch?v=xIKRwRU9UTs

    Ek - 4 : Node.js PHP entegrasyonu Git uygulaması fikir vermesi için : https://github.com/isaacsu/twich

    Ek - 5 : Longpolling hakkında örnek uygulama ve makale : https://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery

    Ek - 6 : Android ve PHP için örnek real time Chat Uygulaması (GCM ile Broadcast) : http://www.androidhive.info/2016/02/android-push-notifications-using-gcm-php-mysql-realtime-chat-app-part-1/

    Araştırman gereken keyword' ler : HTML5 Web Sockets, Node.js Socket.IO, Longpolling.

    -----------------------

    In the examples below the client is the browser and the server is the webserver hosting the website.

    Before you can understand these technologies, you have to understand classic HTTP web traffic first.

    Regular HTTP:

    1. A client requests a webpage from a server.
    2. The server calculates the response
    3. The server sends the response to the client.

    HTTP

    Ajax Polling:

    1. A client requests a webpage from a server using regular HTTP (see HTTP above).
    2. The requested webpage executes JavaScript which requests a file from the server at regular intervals (e.g. 0.5 seconds).
    3. The server calculates each response and sends it back, just like normal HTTP traffic.

    Ajax Polling

    Ajax Long-Polling:

    1. A client requests a webpage from a server using regular HTTP (see HTTP above).
    2. The requested webpage executes JavaScript which requests a file from the server.
    3. The server does not immediately respond with the requested information but waits until there'snew information available.
    4. When there's new information available, the server responds with the new information.
    5. The client receives the new information and immediately sends another request to the server, re-starting the process.

    Ajax Long-Polling

    HTML5 Server Sent Events (SSE) / EventSource:

    1. A client requests a webpage from a server using regular HTTP (see HTTP above).
    2. The requested webpage executes javascript which opens a connection to the server.
    3. The server sends an event to the client when there's new information available.

      • Real-time traffic from server to client, mostly that's what you'll need
      • You'll want to use a server that has an event loop
      • Not possible to connect with a server from another domain
      • If you want to read more, I found these very useful: (article)(article)(article)(tutorial).

    HTML5 SSE

    HTML5 Websockets:

    1. A client requests a webpage from a server using regular http (see HTTP above).
    2. The requested webpage executes JavaScript which opens a connection with the server.
    3. The server and the client can now send each other messages when new data (on either side) is available.

      • Real-time traffic from the server to the client and from the client to the server
      • You'll want to use a server that has an event loop
      • With WebSockets it is possible to connect with a server from another domain.
      • It is also possible to use a third party hosted websocket server, for example Pusher orothers. This way you'll only have to implement the client side, which is very easy!
      • If you want to read more, I found these very useful: (article), (article) (tutorial).

    HTML5 WebSockets

    Comet:

    Comet is a collection of techniques prior to HTML5 which use streaming and long-polling to achieve real time applications. Read more on wikipedia or this article.


    Now, which one of them should I use for a realtime app (that I need to code). I have been hearing a lot about websockets (with socket.io [a node.js library]) but why not PHP ?

    You can use PHP with WebSockets, check out "http://socketo.me/"

     

    Stackoverflow' dan alıntıdır.

     

     

     

    HTML5 Web Sockets Browser Desteği : http://caniuse.com/#search=websockets

    ozgunlu tarafından 15/Tem/16 13:10 tarihinde düzenlenmiştir

    Hello, i am nothing. I come from Neverland.
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    @ozgunlu videoları da izleyeyim abi teşekkürler. Android tarafında bir işim yok Android'i şuan sadece freelance için kullanıyorum Php Jquery Botstrap ajax vs. yeni öğreniyorum. Makale için de tekrar teşekkürler :)


    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: 1520 Toplam Mesaj: 12
php jquery javascrpit