Ben web barındıran çeşitli kullanarak, oldukça teknik olmayan kullanıcılar tarafından dağıtılan edilecek birçok farklı müşteri / siteler, dışarı gidecek bir PHP komut dosyası önbelleğe çeşit uygulamak çalışıyorum. Nedeniyle kullanıcıların teknik olmayan doğası, ben dosya izinlerini çimdik onları soran önlemek istiyorum. Önbelleğe alma oturumları arasında olması gerekiyor, bu yüzden oturum değişkenleri kullanarak çıktı. Ben ASP bu kodlama eğer ben uygulama değişkenlerini kullanmak istiyorum, ama onlar (benim gördüğüm kadarıyla) PHP yoktur
Herkes bu başarmak konusunda herhangi bir öneriniz var mı?
İşte kabul ettik bazı olasılıklar vardır, bunlar üzerinde herhangi bir yorum yararlı olacaktır:
- Sistem geçici klasörlerdeki dosyaları yoluyla Caching - Ben böyle bir klasör bulmak için (PHP4 benzer işlevi haddelenmiş ya da bazı ev) sys_get_temp_dir () kullanabilirsiniz. Burada dezavantaj, muhtemelen openbase_dir kısıtlama kullanarak bilgisayarlar üzerinde çalışmak olmaz edilir
- Ben baktım bazı web sitesi de tüm kullanıcı oturumları böylece oturum değişkenleri gibi davranmaya oturum değişkenleri zorlayarak aynı oturum durumu paylaşmak yapma içine kandırma PHP bahsetti. Tabii ki şimdi ... Bu zaten korkutucu görünüyor yazı bulamıyorum. (Ben tekrar bulmak kez ben bu mesaja bağlantı ile bu soruyu güncelleme olacak)
- Overkill gibi görünüyor - Amazon Simple Storage Service gibi bir üçüncü taraf veri deposunu kullanın
- Ben kontrol bir sunucuda verileri önbelleğe ve müşterinin her hit oradan yeni veri indirmek var.
Bir kez daha, bu fikirleri veya herhangi yenileri üzerinde herhangi bir yorum mutluluk duyacağız.
UPDATE: paylaşılan bir oturum durumunu kullanmak için () session_id kullanarak çalıştı, ama çalışmıyor. Her oturum, herhangi bir fikir kendi "GlobalCache" korumak neden?:
// This code doesn't work, but the similar code in my answer does!
function test() {
if (!$_SESSION['session_count']) $_SESSION['session_count'] = 0;
$_SESSION['session_count']++;
$count = get_cache( 'count' );
print "pre application count: $count<br>";
if ( !$count )
$count = 0;
$count++;
print "session_id: " . session_id() . "<br>";
print "post application count: $count<br>";
print "session_count: " . $_SESSION['session_count'] . "<br>";
set_cache('count', $count);
}
function set_cache( $name, $value ) {
$old_session = session_id();
print "old_session (set): $old_session<br>";
session_id("GlobalCache");
print "new_session (set): " . session_id() . "<br>";
$_SESSION[$name] = $value;
session_id( $old_session );
}
function get_cache( $name ) {
$old_session = session_id();
print "old_session (get): $old_session<br>";
session_id("GlobalCache");
print "new_session (get): " . session_id() . "<br>";
$value = $_SESSION[$name];
session_id( $old_session );
return $value;
}
session_start();
test();
UPDATE: , bazı aslında bazıları için mükemmel bir çözümdür memcached kullanarak önerdi, ama ben uç sunucu ortamı üzerinde kontrol yok çünkü bir seçenek değildir. Fikir insanlar sadece kutunun dışında çalışan bir hosting hesabı kadar sadece FTP yapabilirsiniz komut dosyası sahip olmaktır.
UPDATE: birisi komut ile kendi cache klasör oluşturarak önerdi, ama ben zaten yazma izinleri olan bir klasörün içinde böyle bir klasör oluşturmak için gerek değil mi?
UPDATE, SOLUTION FOUND: Ben global oturum komut sorunları bulmaktan sona erdi ve bu yönde kendi cevap attılar. Yardım için herkese teşekkürler.