2009-01-13 15 views
11

Tôi đang sử dụng APC để lưu các biến người dùng (với lệnh apc_store/apc_fetch). Tôi cũng đã kích hoạt APC cho CLI với tùy chọn "apc.enable_cli = 1". Tuy nhiên, phiên bản CLI của PHP dường như truy cập vào một bộ nhớ cache APC khác với phiên bản được Apache sử dụng.Làm cách nào để có thể sử dụng cùng một bộ nhớ cache APC khi được gọi trên CLI và web?

Có thể định cấu hình APC để sử dụng cùng một bộ nhớ cache cho cả hai yêu cầu CLI và web?

Trả lời

11

Không thể .. Cách duy nhất để thực hiện điều gì đó giống như yêu cầu của bạn là sử dụng một cái gì đó như memcacheD. Hoặc chạy những gì bạn cần để chạy qua máy chủ web của bạn. Điều gì đang chạy CLI mà bạn không thể chạy qua một kịch bản web với cronjob?

+0

.. hoặc quan trọng hơn - tại sao bạn cần loại tối ưu hóa hiệu năng đó trên tập lệnh cli? – troelskn

+0

Rất đúng .. web thường là tác động/lượt truy cập cao và cuộc gọi tắt CLI. – DreamWerx

+3

Tôi không bận tâm về APC lưu trữ bộ nhớ cache của tập lệnh CLI. Tôi muốn có thể truy cập vào cùng một bộ đệm người dùng APC từ web và CLI. Nếu không thể, tôi chỉ cần gọi một tập lệnh web từ CLI và chuyển nó vào dữ liệu cần thiết. Không phải là giải pháp thanh lịch nhất! –

1

gọi CLI của bạn như là một CGI /path-to/cgi-sys/php5.cgi /home/name/crons/engine.php

+0

Ý tưởng hay, nhưng điều này không hiệu quả đối với tôi trên CentOS (/ usr/bin/php-cgi) – ColinM

+0

Điều này sẽ chỉ hoạt động nếu bạn đang chạy PHP dưới dạng CGI nhanh, không phải với mod_php trong Apache (vì APC là trong bộ nhớ của các tiến trình Apache). – Mojah

4

Bạn có thể sử dụng shm. Công nghệ này cho phép truy cập vào bộ nhớ chia sẻ Unix. Bạn có thể đặt một số biến trong shm và sau đó trong một scritp, thậm chí lập trình trong một languaje bạn có thể nhận được các biến chia sẻ.

shm_put_var và shm_get_var.

Đó là chậm hơn so với APC, nhưng nó nhanh hơn so với memcached, redis, vv

Tôi hy vọng nó sẽ giúp bạn, và tôi xin lỗi vì tiếng Anh của tôi ....

0

bạn sẽ cần một máy chủ web được viết bằng php - bộ nhớ cache APC chỉ được chia sẻ bởi các tiến trình con được chia nhỏ. Nếu bạn có một máy chủ web php, bạn có thể bắt đầu một cli chủ, init apc, fork và tải/chạy máy chủ web trong một quá trình con, và ngã ba và chạy script php cli của bạn trong khác. Loại hack tổng thể, huh. Ngã ba và yêu cầu(), tôi không nghĩ rằng bộ nhớ cache apc sẽ tồn tại một exec()