ve yardım için şimdiden teşekkürler.
Background - I am writing a PHP script that needs to figure out the destination the caller is trying to reach. Telephony prefixes are strings that identify a destination. For each call, the program must find the longest prefix that matches the string. For example the number 30561234567 would be matched by 305 but not by 3057 or 304. If 3056 existed it would be the preferred match.
Çeşitli veri yapılarını araştırdıktan sonra, her düğüm bir rakam saklar ve diğer 10 olası seçenekler işaretçiler içeren bir ağaç ideal görünüyor. Bu bir dizi yerine bir değerini bulana kadar komut böylece, 3 kontrol orada bir dizi bulabilirsiniz, o yeni dizisinde 0 kontrol, başka bir dizi bulmak ve olabilecek diziler, olarak uygulanabilir. Bu değer, hedef kimliği (script çıkış) olacaktır.
Requirements - Performance is absolutely critical. Time spent checking these prefixes delays the call, and each server has to handle large amounts of calls, so the data structure must be stored in memory. There are approximately 6000 prefixes at the moment.
Problem - The script is run each time the server receives a call, so the data must be held in a cache server of some sort. After checking memcached and APC (Advanced PHP Cache), I decided to use APC because it is [much faster][3] (it is a local memory store)
Ben sorun diziler dizisi derin 10 diziler kadar olabilir, ve ben bir nesne olarak önbelleğe eklerseniz,-serialize de uzun bir zaman alacak, çok karmaşık bir veri yapısı olmasıdır.
Ancak ben ayrı önbellek için her dizi eklerseniz (aşağıdaki dizisi için diziden 30, 305 daha sonra dizinin 3, 30 3 gibi kolayca bulmak mümkün mantıksal bazı adlandırma yapısı ile bu yama vs ..) I Bana çok sık önbelleği vurmak yapma (arama başına 10'a kadar) önbellek birçok kez farklı diziler almak zorunda kalacak.
Ben bu konuda doğru yolu gidiyorum? Belki başka bir çözüm var mı? Yoksa diğer üstün önerdi yöntemlerden biridir?
Eğer giriş için teşekkür ederim,
Alex