Quercus and App Engine – Reading from the data store.

Using brian’s scripts a base and google’s jdo documentation, I’ve got a working example of reading from the app engine data store with php.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
import phptest.test;
import phptest.PMF;
 
$p = PMF::get();
$pm = $p->getPersistenceManager();
$q = $pm->newQuery("select from phptest.test");
$results = $q->execute();
//Returns a php array of resources. Foreach doesn't seem to work here. This seems to be an issue with Quercus.
$account = count($results);
for($a=0;$a < $account; $a++){
	echo $results[$a]->getId() . " - - " . $results[$a]->getFirstName() . '<br/>';
}
$pm->close();
?>

Its just that easy.

Deletes work the same way too. The JDO persistence manager has a method called ‘deletePersistentAll()’ which will truncate the table. To delete a specific item, select it and call ‘deletePersistent(obj)’ where the obj is your record object. See the comments below.

JDO updates your data automatically. Select the item. Change the data and when you call the persistence managers close method, the changes will be saved.

Need more info: Read the google docs.

PHP in Google App Engine

Google recently expanded their app engine service to allow java in addition to python. No php or ruby support yet. Choosing java opens the door for both.

Quercus is a pure java implementation of php and it allows us to run php code in app engine. Some really smart people figured out how to make it work. Check out brian and webdigi.

Using their pre-configured environments its actually pretty easy. Brian even figured out how to start saving stuff into the app engine data store. Good stuff.

If your interesting in playing with this, here are some links you’ll need in addition to the ones provided by Brian and friends:

Google’s docs for app engine data connector -Explains how jdo works. I’m a php guy, not a java guy. Using Brian’s example on how to write to and the docs found here, you should be able to get started reading and writing to your accounts datastore.

App engine SDK – Get the eclipse plug-in. Its got a local development server included so you can test your apps before sending them up to google. It also has a push button upload. The module can also co-exist with Zend’s PDT plug-in.
NOTE: When starting the development server, you may get an error from java the first couple of times the page loads. Just reload the page a couple of times and the error will go away.