① laravel自帶隊列和redis實現隊列哪個效率高
Laravel 的隊列只是一些用於操控隊列的代碼,跟後端具體的數據存儲方式無關
Redis 就是數據存儲的一種方式,還有 MySQL 等
默認的 Sync 就是同步隊列其實並不是隊列,它的作用就是把要在隊列中執行的代碼放到當前 php 線程中阻塞執行,因為 PHP 默認是單線程阻塞執行的,不執行完,就無法給用戶瀏覽器返回結果
② 想通過Laravel框架使用Redis,系統是Windows7,怎麼安裝啊
通過 Laravel 安裝器安裝
1
先下載 Laravel 安裝器 PHAR 文件。為了方便起見,將該文件重命名為 laravel 並移動至 /usr/local/bin目錄。完成後,只需在你指定的目錄下輸入簡單的 laravel new 命令即可創建一個全新的Laravel安裝。例如,laravel new blog 將創建一個名為 blog 的目錄,該目錄中包含了一份全新的Laravel安裝以及所需的依賴項。這種安裝方法比通過 Composer 安裝要快許多
通過 Composer create-project 命令安裝Lar
1
還可以通過在命令行執行 Composer create-project 命令來安裝Laravel:
composer create-project laravel/laravel --prefer-dist
通過下載Laravel包安裝
1
Composer安裝完成後,下載最新版Laravel框架,把它解壓縮到你伺服器上的一個目錄中。然後在Laravel應用的根目錄下運行命令行命令 php composer.phar install (或者 composer install )來安裝所有的框架依賴包。在此過程中,為了成功完成安裝,你需要在伺服器上安裝好Git。
當Laravel框架安裝好後,你可以使用命令行命令 php composer.phar update 來更新框架。
END
伺服器環境要求
1
Laravel框架有一些系統要求:
PHP最低版本: 5.3.7MCrypt PHP擴展
從PHP 5.5版本開始,針對某些操作系統的安裝包需要你自己手工安裝PHP的JSON擴展模塊。如果你使用的是Ubuntu,可以通過, apt-get install php5-json 命令直接安裝。
配置
Laravel框架幾乎無需配置就可立即使用。你可以自由地快速開始開發。然而,你也許希望先查看下app/config/app.php 配置文件和相關的文檔說明。它包含了一些你也許要修改的配置選項,如 時區 和 地區 等。
許可權設置
Laravel框架有一個目錄需要額外設置許可權: 需要為 app/storage 目錄下的文件設置寫許可權。
路徑設置
一些框架目錄路徑是可以設置的。如果需要改變這些目錄的位置,可以查看 bootstrap/paths.php 文件中的設置。
Laravel框架通過設置 public/.htaccess 文件去除鏈接中的index.php。 如果你你的伺服器使用的是Apache,請開啟mod_rewrite 模塊。
③ 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
④ laravel redis怎麼清除緩存
1.Session:
修改.evn文件:
SESSION_DRIVER:redis
(如果還不行的話,修改config/session.php的driver)
2.緩存修改為redis
注意:使用 Laravel 的 Redis 緩存之前,你需要通過 Composer 安裝 predis/predis 包(~1.0)。
1.修改.evn文件中redis的配置信息
⑤ 使用composer構建PHP框架怎麼把Redis引入
我們選擇 Laravel 的 illuminate/database 作為我們的 ORM 包。我試用了幾個著名的 ORM,發現還是 Laravel 的 Eloquent 好用!讓我們開心的 ORM,開了又開! :-D
在本系列教程里,每一個 Composer 包都要滿足以下基本要求:
原生依賴 Composer 進行管理
在好用的基礎上盡量簡單(比如我們那個超簡單的路由包)
盡量新,用上 PHP 的新特性
如果您還有一些程序相關的問題你可以去後盾人來與一流的技術人員一起討論解答您的問題還有視頻呢
⑥ php redis 什麼時候用
默認情況下,Redis 服務會提供 16 個資料庫,PHPHub 使用 0 號資料庫來做緩存,1 號資料庫來做會話存儲 - Laravel 下配置 Redis 讓緩存、Session 各自使用不同的 Redis 資料庫_PHPHub
隊列的話使用 Beanstalkd
最常用的就是緩存、隊列,當然還有很多其它的,如歸並計算、去重等。
我根據自己使用Redis的場景及個人最佳實踐,整理了一篇文章,redis應用場景與最佳實踐
比如網站搶購時,可以使用redis做隊列,可以使用redis來代替session功能,還有可以拿redis中的無序集合做socket的客戶端id存儲。
⑦ 現在php技術要學習哪些內容
基礎:搭建lamp環境,php語言(函數,結構,資料庫Drivers)
中級:緩存(redis、memcache等),資料庫設計(主從分離),伺服器配置(linux系統學習、動靜分離、負載均衡等)
高級:熟練運用各大框架(thinkphp、CI、YII、laravel等)建議:thinkphp最簡單,可以由此入門
骨灰級:研究php語言核心,加入php核心團隊,做文檔,拓功能,推動php發展(膜拜鳥哥)
⑧ Laravel 如何同時使用不同資料庫驅動
queue配置
首先說明一下我之前的項目中如何使用queue的。
我們現在的項目都是用的symfony,老一點的項目用的symfony1poser/vendor/bin 加入到環境變數中。
source ~/.bash_profile 就可以直接在命令行中使用laravel了。試一下。
laravel -V 能夠看到下面的,就代表成功了。
Laravel Installer version 1.2.1 2、創建項目。
laravel new guagua 3、配置redis和queue。
4、創建controller,
php artisan make:controller DefaultController 在controller的action中push100個queue的任務。
for($i = 0; $i < 100; $i ++) { Queue::push(new SendEmail("ssss".$i)); } 5、創建queue的Command
php artisan make:command SendEmail --queued 修改app/Commands/SendEmail.php,添加一個私有變數。
protected $msg; 同時修改構造函數。
public function __construct($msg) { $this->msg = $msg; } 再修改的handle方法
public function handle() { sleep(4); echo $this->msg."\t".date("Y-m-d H:i:s")."\n"; $this->delete(); } 6、修改routes
Route::get('/', [ 'as' => 'index', 'uses' => 'DefaultController@index' ]); 7、監聽queue
php artisan queue:listen 為了驗證多任務處理,我們同時開三個窗口運行同樣的命令。
8、用laravel內建的server啟動服務
php artisan serve --port 8080 打開瀏覽器,訪問localhost:8080/頁面。當然也可以用nginx,apache之類的。但是需要各種配置,還是內建的使用方便。
在控制台就能看到各個queue執行的情況了,如下圖。可以看到100個任務被三個work平分了。
到此,基本達到了我想要的效果。驗證了laravel可以簡單實現queue,並且可以多任務處理。
make command生成的代碼中use App\Commands\Command ,但是運行時提示沒有這個文件。 解決辦法,修改為 use Illuminate\Console\Command; 不知道為什麼會出現這個低級問題,難道是我mac系統問題,還是我的人品問題。
在controller的action中push隊列的時候,沒有非同步執行,還是在action的腳本中執行的。 發現是配置問題,原來不僅僅要修改config中的queue.php,還要修改.evn中相關配置。 雖然問題解決了,但是還是覺得蛋疼,不能理解。還需要在學習學習laravel。
非同步隊列使用方法
1.配置
關於隊列的定義,這里就不作介紹了。我們要使用非同步隊列就有兩個關鍵:
(1)存儲隊列的地方
(2)執行任務的服務
打開 config/queue.php ,這是Laravel5關於隊列的配置文件。首先我們可以通過 default 參數指定默認隊列驅動,默認配置是 sync , 這是同步隊列,我們要做非同步隊列首先就要改變這里。假設我們用 database 作為驅動,隊列任務將會存放在資料庫中,而我們後面會另外啟動一個後台服務來處理隊列任務,這就是非同步方式了。
'default' => 'database' 修改完配置後,我們需要創建一個表來存放隊列任務,Laravel5已經在自帶artisan命令中內置了一個指令用來生成數據遷移,只需要兩條命令即可,當然你得實現配置好資料庫連接。
php artisan queue:table php artisan migrate 這樣就自動在資料庫中創建了 jobs 表。
2.啟動隊列監聽服務
通過下面這條指令啟動隊列監聽服務,它會自動處理 jobs 表中的隊列任務:
php artisan queue:listen 在linux中,如果想讓它在後台執行,可以這樣:
nohup php artisan queue:listen & 3.添加隊列任務
關於隊列任務的添加,手冊里說的比較詳細,這里就簡單舉個例子吧。
首先,通過artisan創建一個隊列命令:
php artisan make:command SendEmail --queued 這樣會生成 app/Commands/SendEmail.php 這個類文件,這個類會被標識為隊列命令,你可以在 handle 方法中寫自己的業務邏輯。
在控制器中,可以簡單通過 Bus::dispatch 分發任務:
Bus::dispatch(new \App\Commands\SendEmail()); 你會發現任務不會立即執行,而是被放到 jobs 表中,由隊列監聽服務處理。
更詳細的用法建議參考 command bus 和 queue 相關的手冊章節。
⑨ laravel redis 緩存欄位子為什麼是object
1.Session:
修改.evn文件:
SESSION_DRIVER:redis
(如果還不行的話,修改config/session.php的driver)
2.緩存修改為redis
注意:使用 Laravel 的 Redis 緩存之前,你需要通過 Composer 安裝 predis/predis 包(~1.0)。
1.修改.evn文件中redis的配置信息
⑩ laravel 不需要 phpredis 擴展嗎
需要的啊,php中凡事要使用redis的地方都需要先安裝redis的擴展
laravel也不例外,在laravel官方文檔上有寫,因為redis並不是laravel的必須組件,所以在laravel的基礎環境要求中並沒有寫需要redis的extension
而是在文檔的Cache章節中,寫到了:
在使用redis作為laravel的緩存組件之前你必須先通過composer 安裝 predis並通過PECL安裝redis的php擴展