新浪SAE中的資料庫常量是如何實現的?

用新浪SAE時發現他的配置項都是用常量實現的,這樣很方便去調用,還可以不暴露實際配置信息,如:

用戶名  : SAE_MYSQL_USER

密  碼 : SAE_MYSQL_PASS

主庫域名 : SAE_MYSQL_HOST_M

從庫域名 : SAE_MYSQL_HOST_S

端  口 : SAE_MYSQL_PORT

資料庫名 : SAE_MYSQL_DB

想請問下,這些常量是如何實現的?

這些常量是在那一層定義的?


谷歌搜索『SAE資料庫常量的實現』,在搜索結果的第一頁會找到這個鏈接:

在線等,SAE中的幾個Mysql常量是如何是實現的? - 技術問答- 雲計算開

進入這個鏈接,會看到 10 樓的回答中提到了一個文件 sae_include.function.php 。

那麼,谷歌搜索『sae_include.function.php』,第一個結果就是:

SAE Std Lib Source Code Online 。

在這個結果中的這部分:

define( "SAE_MYSQL_HOST_M", "w.rdc.sae.sina.com.cn" );
define( "SAE_MYSQL_HOST_S", "r.rdc.sae.sina.com.cn" );
define( "SAE_MYSQL_PORT", 3307 );
define( "SAE_MYSQL_USER", SAE_ACCESSKEY );
define( "SAE_MYSQL_PASS", SAE_SECRETKEY );
define( "SAE_MYSQL_DB", "app_" . SAE_APPNAME );

就是你想要的答案。

其實很多時候,你離答案就只有一步之遙,但是你卻寧可依賴別人。

UPDATE

在 SAE Std Lib Source Code Online 並沒有找到 sae_get_env 這個函數的定義,但是幾個關鍵常量都是使用這個函數獲取的。通過 PHP 探針可以知道 SAE 上的 PHP 環境有 saeext 和 saecounter 這兩個模塊(下圖),(個人猜測) sae_get_env 應該是在 saeext 模塊內定義的。


我來偏題一下,SAE的變數名總是在調整嗎?剛剛查看文檔才發現已經改成sae.const.MYSQL_DB這種形式了。


推薦閱讀:

終於等到你——MySQL 5.7與PostgreSQL 9.6的百萬QPS大比拼
如何實現基於 follow 關係的 timeline?
如何安裝與連接MySQL?
基於知乎用戶數據的基礎MySQL使用指南
時間序列資料庫漫談

TAG:雲計算 | 資料庫 | 編程語言 | PHP | SinaAppEngine |