用Google App Engine跑php

 Sat, 02 May 2009 11:53:58 +0800

Google App Engine開始測試java的支援了。由於java透過他的scripting可以支援php,所以可以用這個方式間接在Google App Engine跑php。之前在請問一下有人在玩google app engine嗎? 討論串討論了一下,自己又找資料做了一些測試,果然可以,但是有少許語法似乎會有問題。

主要的參考資料可以看下面幾個連結:

詳細的配置使用方法可以參考上面的連結,但是web.xml不要用第二個連結裡面的,他改過QuercusServlet,使用GoogleQuercusServlet,但是以發行的quercus.jar裡面沒有這個東西,所以配置會有問題。只要把google的guestbook範例跟第二個連結中的php範例結合起來理論上應該就ok......不過我直接用那個php範例會出現錯誤......稍微除錯一下php,發現php裡面的

foreach ($greetings as $g) {
......
這一行出現錯誤,所以改了一下陣列的使用方式,就可以跑了:
for ($i=0; $i<count($greetings); $i++) {
$g = $greetings[$i];
......

需要注意的是,目前google appengine datastore的使用與資料庫大大不同,他是一個object data store,目前java可以透過他提供的jdo/jpa方式來存取,存入的entity class必須用java來實作,用php做不出來。參考上面第二個連結可以看到短期可能出現的一些解法(透過H2模擬mysql),長期恐怕還是需要等google推出原生的支援。


2009-5-15 16:52 補充

上了resin的官網仔細看了一下,resin-4.0.0裡面可以找到resin.jar,這裡面就有GoogleQuercusServlet(如同blog上說的)。另外測試了一下,建議使用resin.jar而不是quercus.jar + resin-util.jar + script-10.jar + jetty-util-6.1.0.jar這個solution。這樣使用foreach也不會出現錯誤訊息。