由于系统需求,需要写一个无限循环的控制器,那么既然有一个无限循环的控制器,那么就需要有一个开关,不可能直接通过route来开启吧。当然要使用高级一点的方法啊。

那就是使用控制台通过命令行(command line)来开启。

  有了这个想法,那么我们就要开始着手了。下面介绍我找到的两种方法

  方法1:

    phax-bundle,这个可以帮助我们通过command line 来请求controller或者web client

    step1:安装bundle

      composer require phax/phax-bundle

    step2:

      在compser.json中引用 

{
"require": {
"phax/phax-bundle": "dev-master"
}
}

    step3:

      注册phax-bundle

// app/AppKernel.php

public function registerBundles()
{
$bundles = array(
// ...
new Phax\CoreBundle\PhaxCoreBundle(),
);
}

    step4:

      注册phax路由

#app/routing.yml
phax:
resource: "@PhaxCoreBundle/Resources/config/routing.yml"

    (可选)step5:

       如果你要通过客户端ajax调用controller,就要在模板加上一下代码

{# Phax integration #}
{% javascripts
'@PhaxCoreBundle/Resources/public/js/*'
%}
<script src="{{ asset_url }}" type="text/javascript"></script>
{% endjavascripts %}
<script type="text/javascript">
var phaxConfig = {
www_script: '{{ path('phax_script') }}'
}
</script>
{# END Phax integration #}

    检查是否安装phax是否安装成功

php app/console phax:action help

    phax安装完成以后,下面就是使用了。

    step1:

      创建一个phax controller

    

php app\console generate:bundle

      创建完成后

<?php
// Acme\CommentBundle\Controller\CommentAjaxController.php namespace Acme\CommentBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Phax\CoreBundle\Model\PhaxAction; // 记得应用这个 class CommentAjaxController extends Controller
{
/**
* Add a comment asynchronously
*/
public function addAction(PhaxAction $phaxAction) {
    echo $msg = $phaxAction->get('msg', 'i'm message'); //后面设置的是默认值
  }
}

    step2:把你的控制器注册成一个服务

# src/Acme/CommentBundle/Resources/service.yml
services:
phax.comment:
class: Acme\CommentBundle\Controller\CommentAjaxController
calls:
- [setContainer, ["@service_container"]]

    step3:通过命令行调用

example:
php app/console phax:action comment add -p msg:'hello world'
#说明:php app/console phax:action controller action -p param1:value1 -p param2:value2
 

    输出的内容是:hello world;

  方法2:不用安装bundle,就是自己写一个类,然后应用

参考资料

    

      

Symfony2 通过命令行调用控制器的更多相关文章

  1. Maven-11: 从命令行调用插件

    mvn -h显示mvn命令帮助: usage: mvn [options] [<goal(s)>] [<phase(s)>] Options: -am,--also-make ...

  2. 命令行调用dubbo远程服务

    命令行调用dubbo远程服务 telnet远程连接到dubbo telnet 127.0.0.1 20880 查看提供服务的接口 dubbo>ls com.test.service.TestIn ...

  3. Java项目导出为jar包+导出第三方jar包+使用命令行调用+传参

    Java项目导出为jar包+导出第三方jar包+使用命令行调用+传参 一.打包 情况1:不需要向程序传参数,并且程序没有使用第三方jar包 Eclipse上导出jar: 然后选择一个java文件作为入 ...

  4. VB6 实现命令行调用时附着到原控制台

    Public Declare Function AttachConsole Lib "kernel32.dll" (ByVal ProcessID As Integer) As B ...

  5. blockdev - 从命令行调用区块设备控制程序

    总览(SYNOPSIS) blockdev [options] commands devices 描述(DESCRIPTION) blockdev 工具允许从命令行调用区块设备控制程序. 选项(OPT ...

  6. Shodan搜索引擎详解及Python命令行调用

    shodan常用信息搜索命令 shodan配置命令 shodan init T1N3uP0Lyeq5w0wxxxxxxxxxxxxxxx //API设置 shodan信息收集 shodan myip ...

  7. Laravel 5.2控制器--为什么命令行创建控制器的时候会报错?

    今天我遇到过一种情况:就是之前创建的控制器名称想更改(仅仅只是大小写问题而已),然后用命令行重新创建新的名称的控制器. 结果就报错了? [ReflectionException] Class App\ ...

  8. WebService远程调用(命令行调用)

    远程调用webservice 方法, 通过wsdl命令,生成webservice 对应asmx 文件的对应类(cs文件),然后将此cs文件引用到当前项目中,项目其他地方需要调用webservice方法 ...

  9. 在git bash中使用命令行调用tortoisegit提交代码或查看日志

    Tortoisegit commit / show log命令行 TortoiseGitProc.exe /command:commit TortoiseGitProc.exe /command:lo ...

随机推荐

  1. AngularJs的UI组件ui-Bootstrap分享(二)——Collapse

    Collapse折叠控件使用uib-collapse指令 <!DOCTYPE html> <html ng-app="ui.bootstrap.demo" xml ...

  2. fifo write

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types. ...

  3. MySQL数据库1 - 基本概念及安装

    一.数据管理技术的产生和发展: 1.人工管理阶段 - 效率低,成本高(文字) 2.文件系统阶段 - 易于存储,处理速度快,数据形式丰富(文字,声音,图片...磁带,磁盘) 3.数据库系统阶段 - 易于 ...

  4. Jquery和Javascript 实际项目中写法基础-闭包 (2)

    一.什么是闭包? 概念性的我就不去百度了,感兴趣的可以自己去搜下,我自己的理解,闭包就是一个封装的包,相当于类的概念,把乱七八糟的的东西封装到一起,然后统一使用一个对象来调用,实现代码部分对外开放,部 ...

  5. Android 学习第7课,java android project 项目文档结构

    src: 主要存放java源文件 gen:用于存放由开发工具自动生成的内容 R.java(很重要),用于登记各种资源的ID,编译器在你放入资源于自动生成的,程序员不需要自己去修改,是不能自己修改的 往 ...

  6. 任务太多,时间太少,GT凶猛,不留情面啊。。。

    最近由于提高了发现资料的效率及方法,于是得到了很多好的资料,也打印了好多资料!可是,我突然发现自己好像要做的事太多了,一时间没有了头绪.今天花点时间写个博客,整理一下最近杂乱的状态,看看到底该如何调配 ...

  7. 《JavaScript模式》第5章 对象创建模式

    @by Ruth92(转载请注明出处) 第5章:对象创建模式 JavaScript 是一种简洁明了的语言,并没有其他语言中经常使用的一些特殊语法特征,如 命名空间.模块.包.私有属性 以及 静态成员 ...

  8. 路由器DHCP 动态主机配置

    进入ip设置:ip pool fw 添加网关gateway-list 192.168.1.1 添加网段network 192.168.1.0 mask 255.255.255.0 域名 dns-lis ...

  9. R正则表达式的问题

    今天在处理R的正则表达式的时候发现,R的正则式中的转义字符和linux.python等的还不一样. Linux是使用"\",而R中则使用"[]"! # 我想要将 ...

  10. linux之log_format

    log_format是指存储日志的时候所采用的格式,可以在/usr/local/nginx/conf/nginx.conf的http字段中设置 下面是一个典型的log_format设置 log_for ...