资讯专栏INFORMATION COLUMN

Laravel5.5 综合使用

banana_pi / 2700人阅读

摘要:使用开发一个自动交割的项目,把使用到的开源扩展包及特性整理起来,以供后续使用。一安装提示工具是一个极其好用的代码提示及补全工具,可以给编写代码带来极大的便利。更多关于的任务调度,请看考该文的任务调度计划任务功能

使用 Laravel5.5 开发一个自动交割的项目,把使用到的开源扩展包及特性整理起来,以供后续使用。
一、安装IDE提示工具

Laravel IDE Helper 是一个极其好用的代码提示及补全工具,可以给编写代码带来极大的便利。

1、安装
# 如果只想在开发环境安装请加上 --dev
composer require barryvdh/laravel-ide-helper

安装 doctrine/dbal 「请装上它,在为模型注释字段的时候必须用到它」

# 如果只想在开发环境安装请加上 --dev
composer require "doctrine/dbal: ~2.3"

详细安装方法,请参考这篇博文: Laravel 超好用代码提示工具 Laravel IDE Helper

三个常用命令

php artisan ide-helper:generate - 为 Facades 生成注释

php artisan ide-helper:models - 为数据模型生成注释

php artisan ide-helper:meta - 生成 PhpStorm Meta file

二、Monolog日志包

日志的重要程度不言而喻, 不管是在开发过程中, 还是部署到生产环境后, 都是经常使用的.
随着 psr-3 的出现, 终于统一了 php 中日志的风格.但是, 好用的记录日志系统, 也很重要.
monolog 是我遇到的最好的日志系统.而且, laravel 中也是用的 monolog

安装
composer require monolog/monolog
用法

Github地址:monolog/monolog

pushHandler(new StreamHandler("path/to/your.log", Logger::WARNING));
// $logger->pushHandler(new StreamHandler(storage_path() . "/logs/spider.log"));

// add records to the log
$log->warning("Foo");
$log->error("Bar");
三、抓包工具

Guzzle 是一个十分强大的php的模拟HTTP client的第三方库,可以通过composer安装

Goutte 是一个用来解析HTML文档的第三方库,可以通过composer安装

安装
composer require fabpot/goutte
composer require guzzlehttp/guzzle
创建命令
php artisan make:command Spider
命令参数
// concurrency为并发数 keyWords为查询关键词
protected $signature = "command:spider {concurrency} {keyWords*}"; 
实战
pushHandler(new StreamHandler(storage_path() . "/logs/spider.log"));
        $this->totalPageCount = count($this->urls);

        $guzzleClent = new GuzzleClient();
        $client = new GoutteClient();

        $client->setClient($guzzleClent);

        $request = function ($total) use ($client){
            foreach ($this->urls as $url){
                yield function () use($client, $url){
                    return $client->request("GET",$url);
                };
            }
        };

        // @DOC http://docs.guzzlephp.org/en/stable/quickstart.html?highlight=pool
        // /Users/kaiyiwang/Code/digcoin/vendor/symfony/dom-crawler/Crawler.php
        $pool = new Pool($guzzleClent,$request($this->totalPageCount), [
            "concurrency" => $this->concurrency,
            "fulfilled" => function ($response, $index) use ($logger){
                $res = $response->html();
                 // print_r($res);

                $logger->info($res);

                $this->info("请求第 $index 个请求,连接 " . $this->urls[$index]);

                $this->countedAndCheckEnded();
            },
            "rejected" => function ($reason, $index){
                $this->error("rejected" );
                $this->error("rejected reason: " . $reason );
                $this->countedAndCheckEnded();
            },
        ]);

        // 开始发送请求
        $promise = $pool->promise();
        $promise->wait();

    }

    public function countedAndCheckEnded()
    {
        if ($this->counter < $this->totalPageCount){
            $this->counter++;
            return;
        }
        $this->info("请求结束!");
    }

    // 运行命令:php artisan test:spider-request
}
> php artisan test:spider-request

四、定时任务

CRON是一个守护进程,它驻留在你的linux服务器中,大部分时间都没有唤醒,但是每一分钟它都会睁开双眼,看看是否运行任何给定的任务,你使用crontab文件与该守护进程通信,在大多数常见的设置文件可以位于/etc/crontab,crontab文件可能看起来像这样:

0 0 1 * * /home/full-backup
0 0 * * * /home/partial-backup
30 5 10 * * /home/check-subscriptions
1.添加系统定时任务

在laravel中添加定时任务很简单,首先在系统crontab 添加一个artisan的定时任务,每分钟执行一次。

> crontab -e

// /home/vagrant/Code/digcoin/ laravel项目在服务器的地址
 * * * * * php /home/vagrant/Code/digcoin/artisan schedule:run >> /dev/null 2>&1

2.项目中添加定时命令

AppConsoleKernel 类的 schedule 方法中定义预定的命令:

 protected function schedule(Schedule $schedule)
    {
        // $schedule->command("inspire")
        //          ->hourly();

        // php artisan test:spider-request, 每十分钟调用一次
        $schedule->command("test:spider-request")
            ->everyFifteenMinutes()->withoutOverlapping();
    }

添加好了之后,我们可以直接使用这个命令测试定时任务是否可以执行:

> php /home/vagrant/Code/digcoin/artisan test:spider-request

OK,只需要简单的两步便可实现laravel的定时任务添加。

更多关于Laravel的任务调度,请看考该文:Laravel 的任务调度(计划任务)功能 Task Scheduling

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29199.html

相关文章

  • 基于Laravel5.5的模块化开发

    摘要:安装后是单模块应用,但通常情况下,我们的项目往往会有很多模块,如果按单模块去做,文件目录会异常庞大,不利于维护,耦合性太大。那么下面就详细说一下利用最新如何进行分模块开发。 laravel 安装后是单模块应用,但通常情况下,我们的项目往往会有很多模块,如果按单模块去做,文件目录会异常庞大,不利于维护,耦合性太大。那么下面就详细说一下利用最新laravel5.5如何进行分模块开发。 下载...

    wenhai.he 评论0 收藏0
  • Laravel5-Markdown-Editor 在线编辑器

    摘要:是基于封装的在线编辑器,支持项目。已集成本地七牛云阿里云文件存储。更新记录完成在线编辑器主程序,且集成本地七牛阿里云存储。 Laravel5-Markdown-Editor Laravel5-Markdown-Editor 是基于 editor.md 封装的 Markdown 在线编辑器,支持 Laravel5 项目。已集成本地、七牛云、阿里云文件存储。 更新记录 2017-11-09...

    MoAir 评论0 收藏0
  • windows下laravel5.5手写教程1(适合初学者)

    摘要:打开浏览器输入,如无意外,将出现如下图,表示框架安装成功。四系统内部后台管理系统这个是框架自带的后台登录管理系统,只需要简单的命令即可运行。出现上图即为,创建模型成功。 在PHP个各种web开发框架中,laravel算是一款简洁、优雅的开发框架,本人也刚刚接触到laravel,通过学习大神们的一些文章,下面是我的一些心得体会,希望可以给初学者一些帮助,大家一起进步。言归正传: 本人环境...

    GeekGhc 评论0 收藏0
  • laravel5.5 + react完成简单的CRUD

    摘要:完成简单的在这篇文章中,我想和大家分享如何在框架中使用来创建应用程序。在这个例子中,您可以学习如何为应用程序构建设置,我还使用请求,获取请求,放入请求和删除请求来插入更新删除应用程序。 laravel5.5 + react完成简单的CRUD 在这篇文章中,我想和大家分享如何在PHP Laravel框架中使用js来创建crud(Create Read Update Delete)应用程序...

    2501207950 评论0 收藏0
  • docker搭建Laravel5.5环境

    摘要:安装方法安装克隆地址切换到构建容器进入安装查看容器容器配置本地主机文件服务访问出现欢迎页则表示环境建立成功系统环境及版本核心版过程记录如果网络不好可能会出现下面问题 安装方法 step1: 安装docker、docker-compose 克隆地址: https://github.com/helloMJW/d... 切换TAG到laravel5.5: git checkout lara...

    winterdawn 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<