Ben ile benim verilere süper hızlı erişim sağlamak için gereken bir JSON API var.
JSON API sadece sağlanan GET parametrelere dayalı veritabanı karşı sorgu yapar.
Ben zaten bir cevap olarak önermiyoruz lütfen, benim veritabanını optimize ettik.
Ben bayt kodu kaydederek PHP yardımcı PHP-APC, kullanıyorum, AMA - (benim günlükleri tarafından belirtildiği gibi) saniyede kez tam anlamıyla onlarca çağrıldığını bir JSON API için, ben PHP büyük RAM tüketimini azaltmak gerekir tüketen ... gibi PHP çok daha hızlı yürütmek bir dilde benim JSON API yeniden.
Benim kod aşağıda. Gördüğünüz gibi, oldukça yalındır.
<?php
define(ALLOWED_HTTP_REFERER, 'example.com');
if ( stristr($_SERVER['HTTP_REFERER'], ALLOWED_HTTP_REFERER) ) {
try {
$conn_str = DB . ':host=' . DB_HOST . ';dbname=' . DB_NAME;
$dbh = new PDO($conn_str, DB_USERNAME, DB_PASSWORD);
$params = array();
$sql = 'SELECT homes.home_id,
address,
city,
state,
zip
FROM homes
WHERE homes.display_status = true
AND homes.geolat BETWEEN :geolatLowBound AND :geolatHighBound
AND homes.geolng BETWEEN :geolngLowBound AND :geolngHighBound';
$params[':geolatLowBound'] = $_GET['geolatLowBound'];
$params[':geolatHighBound'] = $_GET['geolatHighBound'];
$params[':geolngLowBound'] =$_GET['geolngLowBound'];
$params[':geolngHighBound'] = $_GET['geolngHighBound'];
if ( isset($_GET['min_price']) && isset($_GET['max_price']) ) {
$sql = $sql . ' AND homes.price BETWEEN :min_price AND :max_price ';
$params[':min_price'] = $_GET['min_price'];
$params[':max_price'] = $_GET['max_price'];
}
if ( isset($_GET['min_beds']) && isset($_GET['max_beds']) ) {
$sql = $sql . ' AND homes.num_of_beds BETWEEN :min_beds AND :max_beds ';
$params['min_beds'] = $_GET['min_beds'];
$params['max_beds'] = $_GET['max_beds'];
}
if ( isset($_GET['min_sqft']) && isset($_GET['max_sqft']) ) {
$sql = $sql . ' AND homes.sqft BETWEEN :min_sqft AND :max_sqft ';
$params['min_sqft'] = $_GET['min_sqft'];
$params['max_sqft'] = $_GET['max_sqft'];
}
$stmt = $dbh->prepare($sql);
$stmt->execute($params);
$result_set = $stmt->fetchAll(PDO::FETCH_ASSOC);
/* output a JSON representation of the home listing data retrieved */
ob_start("ob_gzhandler"); // compress the output
header('Content-type: text/javascript');
print "{'homes' : ";
array_walk_recursive($result_set, "cleanOutputFromXSS");
print json_encode( $result_set );
print '}';
$dbh = null;
} catch (PDOException $e) {
die('Unable to retreive home listing information');
}
}
function cleanOutputFromXSS(&$value) {
$value = htmlspecialchars($value, ENT_QUOTES, 'UTF-8');
}
?>
C bellek yönetimi hem de daha iyi olduğu nasıl, C üzerinde bu PHP kodu dönüştürme başlayacak (kendiniz bunu beri) ve yürütmek için çok, çok daha hızlı?
UPDATE:
Facebooks HipHop benim için otomatik olarak tüm bu yapardın?