Tôi đã sử dụng các ứng dụng mails, merb, django và asp.net mvc trong quá khứ. Những gì họ có chung (có liên quan đến câu hỏi) là họ có mã thiết lập khuôn khổ. Điều này thường có nghĩa là tạo các đối tượng và trạng thái được duy trì cho đến khi máy chủ web được tái chế (như thiết lập định tuyến hoặc kiểm tra bộ điều khiển nào có sẵn, v.v.).Cách duy trì đối tượng giữa các yêu cầu trong PHP
Theo như tôi biết PHP là giống như một kịch bản CGI được biên dịch một số bytecode mỗi khi nó chạy, và sau khi yêu cầu nó bị loại bỏ. Tất nhiên bạn có thể có các phiên, để duy trì dữ liệu giữa các yêu cầu từ cùng một người dùng, và như tôi thấy có các phần mở rộng như APC, mà bạn có thể lưu giữ các đối tượng giữa các yêu cầu ở cấp độ máy chủ.
Câu hỏi của tôi là: làm thế nào người ta có thể tạo một ứng dụng PHP hoạt động như đường ray và như vậy? Tôi có nghĩa là một ứng dụng mà trên các yêu cầu đầu tiên thiết lập khuôn khổ, sau đó trên các yêu cầu thứ 2 và sau đó sử dụng các đối tượng đã được thiết lập. Có một số được xây dựng trong bộ nhớ đệm cơ sở trong mod_php? (ví dụ: lưu trữ bytecode được biên dịch của các ứng dụng php đã thực hiện) Hoặc đang sử dụng APC hoặc một số phần mở rộng tương tự là cách duy nhất để giải quyết vấn đề này? Bạn sẽ làm điều này như thế nào?
Cảm ơn.
EDIT: Câu hỏi thay thế: nếu tôi tạo một ứng dụng PHP lớn có thời gian cài đặt rất lớn, nhưng thời gian chạy nhỏ (như trong các khung được đề cập ở trên) thì tôi nên "lưu" những thứ đã được đặt lên (điều này có thể có nghĩa là rất nhiều thứ, ngoại trừ có lẽ các kết nối cơ sở dữ liệu, bởi vì bạn đã có các kết nối liên tục trong PHP).
Để biện minh cho thời gian thiết lập lớn: điều gì sẽ xảy ra nếu tôi đang sử dụng phản chiếu PHP để kiểm tra xem đối tượng nào có sẵn và đặt thời gian chạy theo đó. Thực hiện rất nhiều phản ánh thường chậm, nhưng người ta phải làm điều đó chỉ một lần (và chỉ đánh giá lại nếu mã nguồn được sửa đổi).
EDIT2: Có vẻ như đó là APC rồi. Thực tế là nó lưu trữ bytecode tự động là tốt để biết.
Việc biên dịch trước các tập lệnh chỉ là một phần của công việc. Nhưng nếu tôi thấy nó một cách khoa học, tôi cũng phải làm phần này bằng cách sử dụng PHP, đúng không? Tôi có nghĩa là ví dụ mod_php sẽ không làm điều này cho tôi. – SztupY
Mã-bộ nhớ đệm là minh bạch. Bạn chỉ cần cài đặt APC và nó sẽ tự động lưu trữ mã byte của bạn trừ khi bạn vô hiệu hóa nó. Dữ liệu ứng dụng của bạn như $ table trong ví dụ của tôi sẽ không được lưu trữ tự động. Bạn phải làm điều đó cho chính bản thân mình. –
Tại sao địa ngục bạn đang kìm nén 'apc_fetch'? ** 'afc_fetch' trả về biến được lưu trữ hoặc mảng biến thành công; FALSE về lỗi **. –