2010-07-14 54 views
0

我有一個修改後的PHP版本,它以PHP編譯爲PHP。我不想討論爲什麼我不應該這樣做;最佳實踐,標準等;所以請不要。如何緩存或評估修改後的PHP版本?

它沒有在覈心中修改,但粗略地使用PHP腳本在評估之前修改每個PHP文件。由於modfiying每個文件的性能損失,我目前緩存的每個文件,然而,這不是一個理想的解決方案,因爲:

  • 每個文件的兩個副本存儲
  • 有可能修改錯誤的文件
  • 服務器用蹩腳的託管不允許file_put_contents(),所以緩存具有本地服務器

另一種解決方案是,以評估在運行時每個文件上進行更新,但是這會帶來的開銷,也需要eval(),它可能會更慢,並且不會給出與include()相同的錯誤消息。

我想知道是否有更好的方法來做到這一點,最好是在不允許file_put_contents()的服務器上工作。

+1

我還不明白這個場景。你有在服務器上運行的PHP的修改版本?修改如何在覈心?遠程主機在哪裏進來? 「編譯每個文件到PHP」是什麼意思?什麼是緩存P​​HP文件?什麼時候評估每個文件進來?我相信這種情況是有道理的,但現在很難理解。 – 2010-07-14 20:37:26

+2

使'file_put_contents'成爲需求,並且一起移動。 – salathe 2010-07-14 20:41:46

+0

查看上面的變化Pekka。 Salathe - 我使用的服務器沒有'file_put_contents',我沒有錢去改變它們,所以這是不可接受的。除非你想讓「富有」成爲一項要求。 – peterjwest 2010-07-15 12:40:03

回答

1

您的服務器是否可以訪問任何共享內存緩存? APC,memcache等? APC聽起來像一個體面的適合這個。

+0

如果我可以在每個PHP文件與APC一起緩存之前修改它,那麼像APC這樣的東西將非常有用。你知道這是可能的嗎? – peterjwest 2010-07-15 12:43:02

+0

由於你在共享主機環境,我懷疑你可以使用任何全局鉤子來捕捉文件,然後再去字節碼。但是,您可以在較高級別使用APC來緩存修改後的文件的字符串源,然後執行您提到的eval()方法。 APC的好處是您可以輕鬆緩存每個文件內容的前後版本。 – sunetos 2010-07-15 14:34:27

+0

爲了澄清,我的意思是存儲源apc_store/apc_fetch。 – sunetos 2010-07-15 14:35:00