2010-02-17 28 views
5

Tôi đang sử dụng simpleXML để đi qua các kết quả XML của một tệp XML của Twitter, nhưng tôi hoàn toàn bị mất khi lưu vào bộ nhớ cache các kết quả bằng PHP. This article dường như là một số trợ giúp, nhưng tôi đã gặp memcache (và memcached. C'mon, namers.) Là tốt, và tôi không biết phải làm gì.Bộ nhớ đệm dữ liệu sơ cấp trong PHP

Tôi đang sử dụng này:

$sxml = simplexml_load_file(
    'http://api.twitter.com/1/qworky/lists/qworkyteam/statuses.xml'); 

foreach($sxml->status as $status){ 
    $name = $status->user->name; 
    $image = $status->user->profile_image_url; 
    $update = $status->text; 
    $url = "http://twitter.com/" . $status->user->screen_name; 
} 

chỉ đơn giản là lưu trữ dữ liệu XML của một danh sách Twitter vào các biến sử dụng được. Nhưng điều phải làm là gì? Tạo một tệp bộ nhớ cache và chỉ chạy khối PHP này nếu tệp bộ nhớ cache cũ hơn mười phút, nếu không sẽ phân phối các biến được lưu trong bộ nhớ cache? Làm cách nào để chuyển qua lại các biến được lưu trong bộ nhớ cache giữa tệp được lưu trong bộ nhớ cache và DOM? Heck, loại tệp mở rộng và tên tệp nào có tệp bộ nhớ cache?

Cảm ơn bạn rất nhiều vì bất kỳ cách nào bạn có thể chỉ cho tôi theo một hướng lành mạnh tại đây.

Trả lời

8

Joshua hãy xem this article về bộ nhớ đệm PHP đơn giản, bạn có thể thực hiện chính xác như bạn đã mô tả dễ dàng (và có thể là cách hợp lý nhất để đi).

+0

Cảm ơn lửa, bài viết đó là một sự trợ giúp lớn! Tôi đã kết thúc bằng cách sử dụng một sửa đổi này: http://snipplr.com/view.php?codeview&id=13646 nhưng bạn đã cho tôi đi đúng hướng! –

4

Như một khái niệm chung, caching không hàm ý một chiến lược để triển khai. Ý tưởng phổ biến là bạn lưu trữ thông tin ở đâu đó cung cấp cho bạn quyền truy cập hiệu quả hơn so với nơi bạn đã thu thập dữ liệu từ ban đầu.

Vì vậy, trong trường hợp này, sẽ hiệu quả hơn khi lấy dữ liệu từ đĩa so với yêu cầu Twitter (thường là mạng latency lớn hơn độ trễ của đĩa IO).

Ngoài ra, việc nhận dữ liệu từ bộ nhớ hiệu quả hơn là lấy thông tin từ đĩa (vì độ trễ của bộ nhớ nhỏ hơn độ trễ của đĩa IO).

Điều đó đang được nói, bạn có thể lưu trữ các giá trị từ Twitter trong bộ nhớ, nếu bạn muốn, hoặc vào một tệp trên đĩa, nếu bạn cần các giá trị tồn tại lâu hơn nói, tắt máy. Làm thế nào bạn làm điều đó là tùy thuộc vào bạn (đĩa hoặc bộ nhớ, phần mở rộng, định dạng, v.v.). Đó là bộ nhớ cache của bạn.

Điều bạn phải cẩn thận là bộ nhớ cache phát triển cũ. Đây là khi thông tin bạn có trong bộ nhớ cache không đồng bộ với nguồn dữ liệu gốc. Bạn phải đưa ra quyết định cho ứng dụng của mình về cách dữ liệu cũ được chấp nhận và yêu cầu lại khi thích hợp, thay thế các giá trị bộ nhớ cache của bạn.

+0

Cảm ơn bạn rất nhiều vì câu trả lời kỹ lưỡng, casper. Điều này đã giúp vượt ra ngoài chỉ là "làm thế nào để". Tôi đã kết thúc với một giải pháp PHP viết lại một tệp XML nếu nó phát triển cũ hơn 10 phút. Bất kỳ lý do cụ thể nào bạn nghĩ rằng tôi nên sợ thiết lập này? Dường như nhạy cảm với API trong khi vẫn giữ dữ liệu tương đối gần đây. –

Các vấn đề liên quan