2012-04-19 40 views
8

Tôi nhớ đọc trên php.net (mặc dù tiếc là dường như không thể tìm thấy trang) mà trình thông dịch PHP có thể chạy theo nhiều cách khác nhau - phổ biến nhất, mỗi khi trang được yêu cầu, một thể hiện của Trình thông dịch PHP được tạo, chạy khóa học của nó, và sau đó bị phá hủy, cùng với tất cả bộ nhớ liên quan đến cuộc gọi trang cụ thể đó. Rõ ràng, nó cũng có thể cho phép tất cả các bộ nhớ để nán lại, để nó có thể được sử dụng một lần nữa trong các cuộc gọi trang trong tương lai; như tôi đã hiểu, về cơ bản cho phép nhiều tập lệnh PHP khác nhau truy cập và sửa đổi cùng một đối tượng, mà không làm mất chúng sau khi tập lệnh hoàn tất.Đối tượng PHP nằm trong bộ nhớ

Hoặc ít nhất, vì vậy tôi nhớ. Có sự thật này? Nếu vậy, làm thế nào tôi sẽ thiết lập nó?

+3

Bạn đang cố gắng giải quyết vấn đề gì? Vấn đề ban đầu là gì? – zerkms

+8

Có lẽ biến $ _SESSION là tất cả những gì bạn cần :) – jantimon

+0

Nếu bạn muốn tồn tại các đối tượng trong bộ nhớ, hãy lưu chúng trong APC hoặc Memcached. Nhưng có, có thể bạn chỉ đang tìm kiếm chức năng phiên. – halfer

Trả lời

5

php không hoạt động theo cách đó. của nó về chạy và quên.

bạn có thể lưu dữ liệu giữa các yêu cầu sử dụng Userland chia sẻ phần mở rộng bộ nhớ, ví dụ: APC, xcache, memcached vv

hoặc bằng cách sử dụng các mảng dữ liệu phiên sau khi gọi session_start _SESSION

$

đừng nghĩ về các tập lệnh php như ứng dụng java trong ví dụ tomcat. php chuẩn không được thiết kế cho trường hợp sử dụng đó. php trình biên dịch hoạt động trên-the-fly.

+0

Tôi tìm thấy [session_name] (http://php.net/manual/en/function.session-name.php) rất hữu ích với điều này. Mỗi tệp có thể chia sẻ cùng một session_name và tất cả dữ liệu có liên quan có thể được lưu trữ trong đối tượng phiên. Bằng cách này, tôi có thể chạy một tệp init để thiết lập đối tượng phiên, và sau đó tất cả các tệp kịch bản có liên quan có thể sử dụng nó cho phù hợp. – Monchoman45

+0

@ Monchoman45 cũng trong các phiên ý kiến ​​của tôi không được thực hiện để thay thế $ GLOBALS hoặc bộ nhớ đệm trang nếu đó là những gì bạn quan tâm;) – Hajo

0

Hãy để nghỉ máy chủ giữa các yêu cầu, vì vậy đối tượng sẽ làm:

  • appserver-in-php - Generic ứng dụng HTTP cách tiếp cận để PHP5.3 + (lấy cảm hứng từ Rack và WSGI)

Với các ứng dụng cũng bằng văn bản cung cấp cho bạn tốc độ cao hơn APC, tuy nhiên nó không có quy mô giữa người dùng nếu bạn cần phải đặt trên các hộp mutliple (bạn vẫn có thể sử dụng các phiên dính).

1

Bạn có thể sử dụng shared memory cho một số điều bạn muốn, nhưng Redis/Memcache có lẽ là cược tốt hơn.

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