From: maxious Date: Thu, 24 Feb 2011 09:57:48 +0000 Subject: Display startup time of schedule_viewer.py X-Git-Url: http://maxious.lambdacomplex.org/git/?p=busui.git&a=commitdiff&h=1904450aebbc46feef949285de8a1892b242fff4 --- Display startup time of schedule_viewer.py --- --- a/aws/awsStartup.sh +++ b/aws/awsStartup.sh --- a/aws/fastcgi.conf +++ b/aws/fastcgi.conf --- a/aws/modules.conf +++ b/aws/modules.conf --- a/aws/php.ini +++ b/aws/php.ini --- a/aws/rc.local +++ b/aws/rc.local --- a/common.inc.php +++ b/common.inc.php @@ -11,18 +11,27 @@ // you have to open the session to be able to modify or remove it session_start(); - if (isset($_REQUEST['service_period'])) $_SESSION['service_period'] = filter_var($_REQUEST['service_period'],FILTER_SANITIZE_STRING); - if (isset($_REQUEST['time'])) $_SESSION['time'] = filter_var($_REQUEST['time'],FILTER_SANITIZE_STRING); + if (isset($_REQUEST['service_period'])) { + $_SESSION['service_period'] = filter_var($_REQUEST['service_period'],FILTER_SANITIZE_STRING); + } + if (isset($_REQUEST['time'])) { + $_SESSION['time'] = filter_var($_REQUEST['time'],FILTER_SANITIZE_STRING); + } if (isset($_REQUEST['geolocate'])) { + if (isset($_REQUEST['lat']) && isset($_REQUEST['lon'])) { + $_SESSION['lat'] = $_REQUEST['lat']; + $_SESSION['lon'] = $_REQUEST['lon']; + } else { $contents = geocode(var_filter($_REQUEST['geolocate'],FILTER_SANITIZE_URL),true); if (isset($contents[0]->centroid)) { - $session['lat'] = $contents[0]->centroid->coordinates[0]; - $session['lon'] = $contents[0]->centroid->coordinates[1]; + $_SESSION['lat'] = $contents[0]->centroid->coordinates[0]; + $_SESSION['lon'] = $contents[0]->centroid->coordinates[1]; } else { - $session['lat'] = ""; - $session['lon'] = ""; - } + $_SESSION['lat'] = ""; + $_SESSION['lon'] = ""; + } + } } //print_r ($_SESSION); function isDebug() @@ -32,11 +41,11 @@ function isMetricsOn() { - return true; + return false; } function debug($msg) { - if (isDebug()) echo ""; + if (isDebug()) echo "\n\n"; } function isFastDevice() { $fastDevices = Array("Mozilla/5.0 (X11;", "Mozilla/5.0 (Windows;", "Mozilla/5.0 (iP", "Mozilla/5.0 (Linux; U; Android", "Mozilla/4.0 (compatible; MSIE"); @@ -199,7 +208,7 @@ curl_setopt( $ch, CURLOPT_HEADER, 0 ); curl_setopt($ch,CURLOPT_TIMEOUT,30); $page = curl_exec($ch); - if(curl_errno($ch)) echo " Database temporarily unavailable: ".curl_errno($ch)." ".curl_error($ch).""; + if(curl_errno($ch)) echo " Database temporarily unavailable: ".curl_errno($ch)." ".curl_error($ch)."
"; curl_close($ch); return $page; } @@ -368,7 +377,7 @@ function geocode($query, $giveOptions) { global $cloudmadeAPIkey; - $url = "http://geocoding.cloudmade.com/$cloudmadeAPIkey/geocoding/v2/find.js?query=".$query."&bbox=-35.5,149.00,-35.15,149.1930&return_location=true&bbox_only=true"; + $url = "http://geocoding.cloudmade.com/$cloudmadeAPIkey/geocoding/v2/find.js?query=".urlencode($query)."&bbox=-35.5,149.00,-35.15,149.1930&return_location=true&bbox_only=true"; $contents = json_decode(getPage($url)); if ($giveOptions) return $contents->features; elseif (isset($contents->features[0]->centroid)) return $contents->features[0]->centroid->coordinates[0].",".$contents->features[0]->centroid->coordinates[1]; --- a/css/jquery-mobile-1.0a3.css +++ b/css/jquery-mobile-1.0a3.css --- a/css/jquery.ui.datepicker.mobile.css +++ b/css/jquery.ui.datepicker.mobile.css --- a/feedback.php +++ b/feedback.php --- a/js/jQuery.ui.datepicker.js +++ b/js/jQuery.ui.datepicker.js --- a/js/jquery-1.5.js +++ b/js/jquery-1.5.js --- a/js/jquery-mobile-1.0a3.js +++ b/js/jquery-mobile-1.0a3.js --- a/js/jquery.effects.core.js +++ b/js/jquery.effects.core.js --- a/js/jquery.ui.autocomplete.js +++ b/js/jquery.ui.autocomplete.js --- a/js/jquery.ui.datepicker.mobile.js +++ b/js/jquery.ui.datepicker.mobile.js --- a/js/jquery.ui.position.js +++ b/js/jquery.ui.position.js --- a/js/jquery.ui.widget.js +++ b/js/jquery.ui.widget.js --- a/layar_api.php +++ b/layar_api.php --- a/schedule_viewer.py +++ b/schedule_viewer.py @@ -32,6 +32,7 @@ import simplejson import socket import time +import datetime import transitfeed from transitfeed import util import urllib @@ -95,6 +96,8 @@ float(stop.stop_lon), stop.location_type, stop.stop_code, stop.zone_id) class ScheduleRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): + cache = {} + def do_GET(self): scheme, host, path, x, params, fragment = urlparse.urlparse(self.path) parsed_params = {} @@ -114,7 +117,7 @@ handler_name = 'handle_json_GET_%s' % m.group(1) handler = getattr(self, handler_name, None) if callable(handler): - return self.handle_json_wrapper_GET(handler, parsed_params) + return self.handle_json_wrapper_GET(handler, parsed_params, handler_name) # Restrict allowable file names to prevent relative path attacks etc m = re.match(r'/file/([a-z0-9_-]{1,64}\.?[a-z0-9_-]{1,64})$', path) @@ -243,11 +246,22 @@ patterns.sort() return patterns - def handle_json_wrapper_GET(self, handler, parsed_params): + def handle_json_wrapper_GET(self, handler, parsed_params, handler_name): """Call handler and output the return value in JSON.""" schedule = self.server.schedule - result = handler(parsed_params) - content = ResultEncoder().encode(result) + # round times to nearest 100 seconds + if "time" in parsed_params: + parsed_params['time'] = int(round(float(parsed_params['time']),-2)) + paramkey = tuple(sorted(parsed_params.items())) + if handler_name in self.cache and paramkey in self.cache[handler_name] : + print ("Cache hit for ",handler_name," params ",parsed_params) + else: + print ("Cache miss for ",handler_name," params ",parsed_params) + result = handler(parsed_params) + if not handler_name in self.cache: + self.cache[handler_name] = {} + self.cache[handler_name][paramkey] = ResultEncoder().encode(result) + content = self.cache[handler_name][paramkey] self.send_response(200) self.send_header('Content-Type', 'text/plain') self.send_header('Content-Length', str(len(content))) @@ -566,12 +580,13 @@ if options.key and os.path.isfile(options.key): options.key = open(options.key).read().strip() - + schedule = transitfeed.Schedule(problem_reporter=transitfeed.ProblemReporter()) print 'Loading data from feed "%s"...' % options.feed_filename print '(this may take a few minutes for larger cities)' + t0 = datetime.datetime.now() schedule.Load(options.feed_filename) - + print ("Loaded in", (datetime.datetime.now() - t0).seconds , "seconds") server = StoppableHTTPServer(server_address=('', options.port), RequestHandlerClass=RequestHandlerClass) server.key = options.key @@ -579,6 +594,8 @@ server.file_dir = options.file_dir server.host = options.host server.feed_path = options.feed_filename + + print ("To view, point your browser at http://localhost:%d/" % (server.server_port)) --- a/staticmaplite/.gitignore +++ b/staticmaplite/.gitignore @@ -1,3 +1,4 @@ cache/tiles cache/map +cache/maps --- a/stop.php +++ b/stop.php @@ -28,7 +28,10 @@ { echo '
  • '; echo '

    '.$row[1][1]; -echo '
    Via: '.viaPointNames($row[1][0],$_REQUEST['stopid']).'

    '; +if (isFastDevice()) { + $viaPoints = viaPointNames($row[1][0],$_REQUEST['stopid']); + if ($viaPoints != "") echo '
    Via: '.$viaPoints.' '; +} echo '

    '.midnight_seconds_to_time($row[0]).'

    '; echo '
  • '; }