PHP bir çalışan bir komut dosyası tarafından değiştirilebilir ve başka bir tarafından okunabilir global değişkenler var mı?
Hayır, tasarım PHP ile hiçbir şey aynı anda veya birbiri ardına çalışan istekleri arasında çalışan işlemler arasında paylaşılır anlamına gelir, bir "pay nothing" mimarisi. Orada veri paylaşmak için yolu vardır, ancak açıkça bunu yapmak zorunda.
Sadece aynı kullanıcının 2 istekleri arasında paylaşmak isterseniz, seans veya çerezleri gitmek için bir yol olabilir.
Eğer birden fazla kullanıcı arasında paylaşmak isterseniz, muhtemelen, kısa bir önbellek terim (örn. memcached) veya bir veritabanı gibi daha sağlam ya ortak sebat çeşit istiyorum.
Her iki şekilde de, veri aslında alınır ve her istek üzerine yeniden inşa ediliyor. Sadece seans durumda sizin için otomatik olarak işlenir oldu.
Yazıları arasında ulaşılabilir tek süper küresel $ _SESSION dizidir. Ne olursa olsun dizide saklamak sonra bir sonraki PHP komut dosyası tarafından alınabilir bir çerez gönderildiğinde, çünkü bu.
Global değişkenler sadece onlar ne olursa olsun kapsam komut ulaşılabilir olduğu anlamına gelir; onlar yazıları arasında gönderilebilir anlamına gelmez.
Yani $ _SESSION dizisini kullanarak değişkenleri aktarmak zorunda (bu istemci bilgisayarda bir çerezi, böylece dizi üzerinden herhangi bir hassas bilgi gönderilir yok) veya Ya POST veya değişkenler göndermek için komut dosyaları arasında GET ya.
Her isteği kendi başına bir php örneği tarafından işlenir. Php global değişkenler sadece aynı php örneği içinde erişilebilir. Eğer memchached module (genellikle dosya sistemine veri yazma daha hızlı olmalıdır) farklı örnekleri arasında veri paylaşmak için gibi bir şey kullanabilirsiniz ancak.
Aslında shared memory kullanarak bunu yapabilirsiniz, veya (paylaşımlı bellek kendisi kullanarak hangi) APC.
Global değişkenler çoğu programlama kötü. Onlar webapps gibi okuyuculu / çok kullanıcılı sistemlerde özellikle kötüsün. Kaçının. Eğer küresel değişkenleri (ziyade küresel sabitleri) kullanmanız gerekiyorsa, bunları işlemleri güncellemeler koruma ile bir veritabanında koymak.
Eğer rağmen farklı komut bahsederken ne gerçekten istediğiniz bir daha uygulama yönelimli dilde bir web uygulaması çerçevesi --- Django (python) veya Rails (yakut) gibi bir şey gibi geliyor. Bunlar oldukça gevşek bağlı komut işlemi web istekleri daha çok daha çok daha tutarlı bir program gibi kod düşünelim.