㈠ sae的php應用為什麼使用不了session
$this->_session_start();
$_SESSION['val'] ='test';
echo $_SESSION['val'];
用這幾句代碼試試。我在sae上可以正常使用。
㈡ SpeedPHP/為什麼使用迤涑<侍
在MVC架構中,View視圖層主要是負責與顯示相關的功能。從提高團隊開發效率的角度出發,sp框架的spView視圖類的期望能達到的目標是:
將HTML模板與PHP代碼分離,一方面可以讓前端設計師(製作HTML模板)和PHP程序員(編寫PHP代碼)並行地工作,也就是人員功能分離;另一方面,有利於組織代碼。
增加可重用模板,減輕重復的工作量。
在一定程度上使用模板緩存技術,以提高程序執行速度。
而以上三點,也正是當前主流PHP模板引擎希望能夠做到,所以sp框架內置了業界最流行同時也是PHP官方出品的Smarty模板引擎技術。使用Smarty模板引擎將很輕易達到上述目標。
Smarty的其中兩個設計理念,就是「功能最小化原則」和「數據屏蔽」。
「功能最小化原則」是因為模板技術主要對象是前端設計師,所以模板上面邏輯功能將是非常有限的,在未進行任何的配置之前,前端設計師幾乎只能使用Smarty自帶的一些簡化前端的函數。當然對於前端設計師而言這是非常有利的,畢竟前端設計師需要的正是專注於前端HTML和簡單的邏輯開發,而不是去思考更為復雜邏輯數據程序設計。
「數據屏蔽」其實對於我們並不陌生,這是面向對象編程中的一個概念,簡單來說就是希望我們的程序可以像一個黑盒子,僅通過唯一的介面來進行交互,這樣的程序才是安全的,可控的。而在Smarty中,數據僅能通過設定的變數來進行傳輸到模板中,這是模板獲得數據的唯一介面,也正是很好體現「數據屏蔽」的特點。
我們可以開啟模板變數調試功能,從模板的調試信息來看,更能體會到「變數是模板獲取數據的唯一介面」的特點。
疑難問題
1.提示「模板編譯目錄不可寫」?
需要建立Smarty模板引擎的臨時目錄,通常是在應用程序目錄下的tmp目錄,並且保證可寫入。
如果是Linux伺服器,那麼需要設置成777。Windows伺服器需要設置成everyone可寫入和讀取、刪除。
2.在控制器中如何獲取Smarty對象?
$smarty = $this->getView();
3.SpeedPHP框架支持三個模板引擎,應該如何選擇?
簡單的小型應用程序可使用speedy,較為簡單易用,而且語法是PHP原生語法,不需要另外學習。
中小型應用都建議使用Smarty,性能較好,而且開發起來效率比較高。
TemplateLite是一款類似Smarty的模板引擎,語法和Smarty基本一致(Smarty 2),是在Smarty之外的一種模板引擎選擇。
4.三個模板引擎的速度對比如何?
在不加入緩存機制的前提下:speedy速度最好,TemplateLite次之,Smarty一般。當然這種差別非常地小。
加入緩存後,三者的速度相等。
參考來源
http://speedphp.com/manual.html
SpeedPHP使用手冊導航
快速入門:
開始使用SpeedPHP | 製作留言本 | 簡便的數據表操作 | 用Smarty來顯示頁面
訪問交互:
入口文件 | 控制器架構 | 網址生成與PATH_INFO | 獲取提交數據 | URLRewrite偽靜態 | 自定義偽靜態URL | 幾種跳轉 | 多語言實現 | 許可權控制 | session、cookie | Ajax應用
數據操作:
編寫數據模型類 | 常規操作CRUD | 安全過濾 | 簡化操作spDB | 數據變數存儲 | 緩存配置
框架概述:
單入口應用程序 | 架構設計 | 第三方類庫及擴展功能 | UTF8編碼與GBK版本 | SAE雲計算版
模板引擎:
模板引擎配置 | 使用Smarty | Smarty開發教程 | 自動顯示模板| speedy教程 | 為什麼使用模板其常見問題 | 模板包含文件 | 注冊函數 | 全局變數賦值 | CSS和JS的路徑
優化加速:
生成靜態HTML概述 | 生成HTML的使用 | 分頁 | 高效函數緩存器| 模板引擎緩存
開發指南:
核心函數 | 格式輸出變數調試mp | 載入包含文件import | 類實例化函數spClass | 開發流程 | 目錄結構、路徑設置 | 大規模系統部署 | 用戶自定義及全局操作 | 自定義函數庫 | 自定義類庫 | 自定義404頁面|程序調試 | mp變數調試 | 安全建議及命名建議
數據模型:
高級資料庫操作 | 數據表一對一關聯 | 數據表一對多關聯 | 數據表多對多關聯 | 一表關聯多表 | 關聯結果的條件限制 | 關聯結果在Smarty模板中顯示 | 多資料庫、數據表 | 多種類型資料庫的配置 | 重寫CRUD操作| 業務數據封裝 | 數據函數復合調用
API參考:
spModel資料庫操作類 | spPager分頁類 | spVerifier數據驗證類 | spCache函數數據緩存類 | spLinker數據表關聯實現類 | spView視圖類 | spHtml靜態HTML生成類 | spController控制器類 | spArgs環境參數類 | 配置 | 資料庫驅動類 | 模板驅動類 | import載入文件
㈢ php部署到新浪雲sae不能正常運行了,求解
sae文檔
運行環境
基本環境
新浪雲 PHP 運行環境目前的 Web 伺服器使用的是:
CentOS-6.x
Apache-2.2.x
PHP-5.3.x / PHP-5.6.x
Web 伺服器運行在 64 位 Linux 環境下。
Apache 運行在 Prefork 模式下,即每個請求都會對應一個 Apache 進程,請求結束後該進程才能服務於下一個請求。平台通過模塊方式擴展了 Apache 和 PHP 的相關功能。
禁用函數和類
出於平台安全性考慮,我們禁用了以下函數和類,禁用的標准主要有四點:
出於對安全性的考慮
出於對資源管理的考慮
不常用的 API
我們提供更好替代方案的 API
禁用的函數:
symlink
link
exec
system
escapeshellcmd
escapeshellarg
passthru
shell_exec
proc_open
proc_close
proc_terminate
proc_get_status
proc_nice
dl
pclose
popen
stream_socket_server
stream_socket_accept
stream_socket_pair
stream_wrapper_restore
mb_send_mail
posix_kill
apache_child_terminate
apache_lookup_uri
apache_reset_timeout
apache_setenv
virtual
socket_create
socket_create_pair
realpath_cache_get
禁用的類:
SQLiteDatabase
SQLiteResult
SQLiteUnbuffered
SQLiteException
沙箱
代碼和數據的隔離:每個應用在運行期間,只能「看」到自己的代碼和數據,即 A 應用無法訪問 B 應用的代碼和數據。注意,這里提到的在 Web 伺服器上的數據,往往指一些中間處理過程的臨時數據,並非最終落地的數據,比如用戶上傳照片會臨時存儲到 TmpFS。
連接數的隔離:我們知道,程序寫的不好,很容易導致阻塞,並進一步導致連接數的飆升。單個應用過多佔用 Apache 連接數,原因往往是多方面的,應用請求外部資源被阻塞是一個最為常見的因素,另外應用頁面過大瀏覽器下載慢也是常見因素之一。公有雲平台同一時刻往往運行著大量的應用,如果某一應用出現連接數異常,最直接的後果是整個平台上的所有應用都將陷入癱瘓。新浪雲平台目前有設置「應用最大 HTTP 並發連接數」,目前這個值是 500,如果應用平均單個請求處理時長是 100ms,那麼該應用每秒的 HTTP 並發連接將可以到達 5000,每天的請求超過 1 億沒有問題。但如果您的應用平均每個請求處理時長 2 秒,那麼該應用每秒的 HTTP 並發連接只能到達 250,每天支撐的請求數將在千萬。總體而言,盡量迅速處理完請求對應用是有利的,而且也是平台所鼓勵的。
內存隔離:目前新浪雲平台上對單個 PHP 腳本的處理,設置了 128MB 的上限 (max_memory,ini_set 不可修改),我們認為這個設置是一個相對很高的值,可以說能夠滿足絕大部分應用的需求。設想一台伺服器 8G 內存,如果每個 PHP 處理都消耗 64M 內存,那麼該伺服器最多隻能同時運行 128 個 PHP 腳本。新浪雲引入了」應用最大並發內存數「的概念,目前的設置是 4GB。如果應用程序單個請求的內存消耗平均在 16MB,那麼可同時運行 256 個請求,這和上面的並發連接數的設定是基本一致的。
CPU 隔離:這主要是通過新浪雲的配額系統來達到 CPU 時間的隔離。每個應用都有 CPU 時間消耗的分鍾速度限制,避免了某一應用過多非法獲取 CPU 資源導致其它應用響應慢的問題。
目前新浪雲平台上允許的「單請求最大存活時長」是 300 秒 。
註解
當應用並發超過限制,系統會返回 508 錯誤,並顯示 Connections out of quota。當應用內存佔用超過限制,系統會返回 509 錯誤,並顯示 Memory usage out of quota。
環境變數
您可以通過列印 PHP 的全局變數$_SERVER來獲取跟新浪雲相關的環境變數信息,每個環境變數的信息如下:
變數名
說明
HTTP_APPNAME 標志該請求屬於哪個應用
HTTP_APPVERSION 標志該請求對應該應用的哪個版本
HTTP_ACCESSKEY 該應用訪問各種服務資源的帳號
HTTP_SECRETKEY 該應用訪問各種服務資源的密碼
HTTP_APPCOOKIE 一些和 app 管理相關信息
警告
不要直接列印出$_SERVER變數,這樣可能會造成應用的 AccessKey 和 SecretKey 的泄露。為了應用的安全考慮,請保護好自己的 AccessKey 和 SecretKey。
常用字體文件路徑:
constantSAE_Font_Sun
宋體字體文件路徑
constantSAE_Font_Kai
楷體字體文件路徑
constantSAE_Font_Hei
文泉驛正黑字體文件路徑
constantSAE_Font_MicroHei
文泉驛微米黑字體文件路徑
全局函數
is_https()
判斷客戶端是以 http 還是以 https 的方式連接。
返回:
如果是 https 連接返回 true,否則返回 false。㈣ SAE PHP報錯:Class 'com' not found,怎麼辦
1、首先在windows的「服務」裡面檢查COM+服務是否已經啟動。如果未啟動,請啟動它。
大概是該服務:Windows Management Instrumentation
2、檢查php目錄ext文件夾下面php_com_dotnet.dll是否存在。(順便說一下,ext通常作為php程序的擴展目錄,在安裝php的時候一般已經設置好。否則就應該不僅僅報主題所說的錯咯。)
3、如果沒問題,在php.ini裡面加入以下語句:
[PHP_COM_DOTNET]
extension=php_com_dotnet.dll
4、php.ini中設置
com.allow_dcom = true
㈤ 新浪sae怎麼運行php和mysql
你可以把php代碼放到sae空間去,運行就行,但SAE 的php和mysql 環境某些功能不能使用,但不影響絕大部分程序的運行。
㈥ 為什麼SAE上php5.6的應用不能在線編輯代碼
SAE有git功能吧,把代碼同步到本地,然後在本地修改,測試,在推送到線上,這樣就好了啊
㈦ 新浪SAE的php本地開發環境誰用過,我這里的apache無法啟動,官網上下載的壓縮包,里邊沒改過什麼東西
啟動sae的apache之前要把另一個apache給關掉(如果還有服務的話,服務也要停掉),可能是80埠已經被另一個apache佔用了,所以sae的apache啟動不了
㈧ php的laravel框架sae能支持嗎
支持的。
改造本地項目使其支持 SAE 運行環境
接下來我會簡要介紹本地項目的基本改造過程,從而使我們在不影響本地開發的情況下,做到本地開發和 SAE 線上運行環境的無痛切換。
1. 修改 app/config/app.php
<?php
$app = array(
'debug' => false,
'url' => 'http://www.dilicms.com',
'timezone' => 'PRC',
'locale' => 'zh-cn',
'key' => '',
'providers' => array(
'Illuminate\Foundation\Providers\ArtisanServiceProvider',
'Illuminate\Auth\AuthServiceProvider',
'Illuminate\Cache\CacheServiceProvider',
'Illuminate\Foundation\Providers\CommandCreatorServiceProvider',
'Illuminate\Session\CommandsServiceProvider',
'Illuminate\Filesystem\FilesystemServiceProvider',
'Illuminate\Foundation\Providers\ComposerServiceProvider',
'Illuminate\Routing\ControllerServiceProvider',
'Illuminate\Cookie\CookieServiceProvider',
'Illuminate\Database\DatabaseServiceProvider',
'Illuminate\Encryption\EncryptionServiceProvider',
'Illuminate\Filesystem\FilesystemServiceProvider',
'Illuminate\Hashing\HashServiceProvider',
'Illuminate\Html\HtmlServiceProvider',
'Illuminate\Foundation\Providers\KeyGeneratorServiceProvider',
'Illuminate\Log\LogServiceProvider',
'Illuminate\Mail\MailServiceProvider',
'Illuminate\Foundation\Providers\MaintenanceServiceProvider',
'Illuminate\Database\MigrationServiceProvider',
'Illuminate\Foundation\Providers\OptimizeServiceProvider',
'Illuminate\Pagination\PaginationServiceProvider',
'Illuminate\Foundation\Providers\PublisherServiceProvider',
'Illuminate\Queue\QueueServiceProvider',
'Illuminate\Redis\RedisServiceProvider',
'Illuminate\Auth\Reminders\ReminderServiceProvider',
'Illuminate\Foundation\Providers\RouteListServiceProvider',
'Illuminate\Database\SeedServiceProvider',
'Illuminate\Foundation\Providers\ServerServiceProvider',
'Illuminate\Session\SessionServiceProvider',
'Illuminate\Foundation\Providers\TinkerServiceProvider',
'Illuminate\Translation\TranslationServiceProvider',
'Illuminate\Validation\ValidationServiceProvider',
'Illuminate\View\ViewServiceProvider',
'Illuminate\Workbench\WorkbenchServiceProvider',
'Lavender\Cloud\Sina\Patcher\SaePatcherServiceProvider',
),
'manifest' => storage_path().'/meta',
'aliases' => array(
'App' => 'Illuminate\Support\Facades\App',
'Artisan' => 'Illuminate\Support\Facades\Artisan',
'Auth' => 'Illuminate\Support\Facades\Auth',
'Blade' => 'Illuminate\Support\Facades\Blade',
'Cache' => 'Illuminate\Support\Facades\Cache',
'ClassLoader' => 'Illuminate\Support\ClassLoader',
'Config' => 'Illuminate\Support\Facades\Config',
'Controller' => 'Illuminate\Routing\Controllers\Controller',
'Cookie' => 'Illuminate\Support\Facades\Cookie',
'Crypt' => 'Illuminate\Support\Facades\Crypt',
'DB' => 'Illuminate\Support\Facades\DB',
'Eloquent' => 'Illuminate\Database\Eloquent\Model',
'Event' => 'Illuminate\Support\Facades\Event',
'File' => 'Illuminate\Support\Facades\File',
'Form' => 'Illuminate\Support\Facades\Form',
'Hash' => 'Illuminate\Support\Facades\Hash',
'HTML' => 'Illuminate\Support\Facades\HTML',
'Input' => 'Illuminate\Support\Facades\Input',
'Lang' => 'Illuminate\Support\Facades\Lang',
'Log' => 'Illuminate\Support\Facades\Log',
'Mail' => 'Illuminate\Support\Facades\Mail',
'Paginator' => 'Illuminate\Support\Facades\Paginator',
'Password' => 'Illuminate\Support\Facades\Password',
'Queue' => 'Illuminate\Support\Facades\Queue',
'Redirect' => 'Illuminate\Support\Facades\Redirect',
'Redis' => 'Illuminate\Support\Facades\Redis',
'Request' => 'Illuminate\Support\Facades\Request',
'Response' => 'Illuminate\Support\Facades\Response',
'Route' => 'Illuminate\Support\Facades\Route',
'Schema' => 'Illuminate\Support\Facades\Schema',
'Seeder' => 'Illuminate\Database\Seeder',
'Session' => 'Illuminate\Support\Facades\Session',
'Str' => 'Illuminate\Support\Str',
'URL' => 'Illuminate\Support\Facades\URL',
'Validator' => 'Illuminate\Support\Facades\Validator',
'View' => 'Illuminate\Support\Facades\View',
),
);
$app['sae'] = false;
if (defined('SAE_ACCESSKEY') && (substr(SAE_ACCESSKEY, 0, 4 ) != 'kapp')) {
$removeProviders = array(
'Illuminate\Cache\CacheServiceProvider',
'Illuminate\View\ViewServiceProvider',
'Illuminate\Session\SessionServiceProvider',
);
foreach ($app['providers'] as $key => $provider) {
if (in_array($provider, $removeProviders)) {
unset($app['providers'][$key]);
}
}
$app['providers'] = array_merge($app['providers'], array(
'Lavender\Cloud\Sina\Cache\CacheServiceProvider',
'Lavender\Cloud\Sina\Storage\StorageServiceProvider',
'Lavender\Cloud\Sina\View\ViewServiceProvider',
'Lavender\Cloud\Sina\Session\SessionServiceProvider',
));
$app['aliases']['Storage'] = 'Lavender\Cloud\Sina\Storage\Storage';
$app['sae'] = true;
}
return $app;
以上代碼主要作用:在判斷程序運行在 SAE 運行環境下的時候,自動注入相應的類取代 Laravel 自帶的類實現。
2. 修改 app/config/database.php
使用 SAE 資料庫設置常量配置我們的資料庫設置。
'mysql' => array(
'driver' => 'mysql',
'host' => SAE_MYSQL_HOST_M,
'database' => SAE_MYSQL_DB,
'username' => SAE_MYSQL_USER,
'password' => SAE_MYSQL_PASS,
'charset' => 'utf8',
'collation' => 'utf8_general_ci',
'prefix' => '',
),
3. 配置 app/config/cache.php 和 app/config/session.php
'driver' => 'memcache',
使用 SAE 提供的 memcache 驅動。
4. 配置本地開發環境
Laravel 支持自定義開發環境,一般本地開發就是 local 配置啦,這里可以在bootstrap/start.php 中設置。
然後我們在 app/config/local 文件夾下配置本地開發環境配置。
經過以上配置,我們搭建了本地開發和SAE運行環境的配置分離。
然後就是盡情開發啦~~~~~~~~~
上傳代碼到 SAE
㈨ 用官網的PHP SDK做的微博登錄API,登錄後一直出現500錯誤,求解(下面是callback的代碼)
500是服務端錯誤了
㈩ 新浪SAE安裝WeCenter 2.5.10,跳出有關Zend/Session.php警告提示,如何設置其中要求的ini
是SEA不支持或不允許設置這些php.ini directives 吧