① 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扩展