I had another idea which is a simplification on my first one : an action acting like a proxy on the php server. I just wrote a little POC that seems to work. Here are the few lines to put in a controller:
import urllib def make_get_stuff(an_url): def get_stuff(): stuff=urllib.urlopen(an_url) return stuff.read(),stuff.info(),stuff.getcode() return get_stuff HEADER_TAGS_TO_COPY=("Content-Type","Date","Accept-Ranges","Content- Length", "Etag","Last-Modified","Server","X-Powered-By") def proxy(): stuff_url="http://www.mysite.be/%s?%s" % (request.url[22:], request.env.query_string) stuff_content,stuff_info, stuff_status=cache.ram(stuff_url, lambda: cache.disk(stuff_url, make_get_stuff(stuff_url),time_expire=None),time_expire=40) for header_tag in HEADER_TAGS_TO_COPY: header_line=stuff_info.getheader(header_tag) if header_line: response.headers[header_tag]=header_line response.status=stuff_status return stuff_content And I have obviously to write some lines in routes.py like (the proxy action is in the w.py controller of the poc app): (r'.*:http://.*:.* /(?P<any>(?:admin/|poc/).*)', r'/\g<any>'), (r'.*:http://.*:.* /(?P<any>.*)', r'/poc/w/proxy/vars=\g<any>'), # I think that's not used That seems do the job (and it's quite faaaaaaaast ;-) ). I can even crawl the old website and it will stand entirely in the cache, I would then be able to shut down the php server (providing I manage the 4xx errors myself) Some questions about that solution: - are there any drawbacks that I don't see ? (except that the cache MUST be managed). - what are the headers lines that are better to be copied from the php response ? I guess that the only criterion is to please Google and I have few clues about their likes and dislikes. Content-Type must be copied, that's for sure, for the others, I don't know and for the ones added by web2py : Set-Cookie (session.forget ?), Pragma, Cache- Control, ... I don't know if it's better to keep them or not : I don't want to foolish Google in a way or another. - I could replace the cache (or add that to it) by using the db (mysql in prod) to store of the old php site stuffs (pages, images, ppt, ...). Any advice ? Best wishes everybody and thx to all of you : OSS is great, web2py is huge and that community is soooooooo cool ! On Dec 30 2010, 6:07 pm, mdipierro <mdipie...@cs.depaul.edu> wrote: > > My main concerns about this way are: > > - the complexity of having runphp working > > there is no complexity but it is reeeeally slow. > > > - the work on the templates : I guess that I have to put thephp > > templates in the view folder but I don't see exactly what else I have > > to do on them > > Or move them in views/phpand make a web2py controllerphp.py with one > action for each file . wiht the instructions above you will be able to > inject both web2py tags {{...}} andphptags <?...?> > > > - do I have to tweak routes.py ? in the same way as above ? > > It depends on the original files. Probably yes. > > Why not look at this first: > > http://www.web2py.com/php