由于系统需求,需要写一个无限循环的控制器,那么既然有一个无限循环的控制器,那么就需要有一个开关,不可能直接通过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. Android常见控件— — —Button

    <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android=&qu ...

  2. UE4 - C++ 射线捕捉

    #include "Runtime/Engine/Classes/Kismet/KismetMathLibrary.h" //省略大部分代码 void AMyFPS_Charact ...

  3. rpm软件包管理

    RPM 有五种基本的操作方式(不包括创建软件包): 安装, 卸载, 升级, 查询,和验证. 下面我们就来逐一的讲解吧. 一. 安装RPM包 RPM 软件包通常具有类似foo-1.0-1.i386.rp ...

  4. 数组第K小数问题 及其对于 快排和堆排 的相关优化比较

    题目描述 给定一个整数数组a[0,...,n-1],求数组中第k小数 输入描述 首先输入数组长度n和k,其中1<=n<=5000, 1<=k<=n 然后输出n个整形元素,每个数 ...

  5. HDU 5876 (大连网赛1009)(BFS + set)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5876 题意:给定一个图(n个顶点m条边),求其补图最短路 思路:集合a表示当前还未寻找到的点,集合b表 ...

  6. 从零开始学习Node.js例子一 http get和post

    httpserverrequestget.js /* 获取GET请求内容 由于GET请求直接被嵌入在路径中,URL是完整的请求路径,包括了?后面的部分,因此你可以手动解析后面的内容作为GET请求的参数 ...

  7. Magento文件系统目录结构

    magento │  .htaccess│  cron.php //系统cron程序,修改 linux的cron运行,加入magento的一些定时处理│  cron.sh│  favicon.ico ...

  8. B - 搬寝室

    Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Pract ...

  9. 摘要评注The Cathedral & The Bazaar

    2013年暑期买到这本书,距离其第一版已经有14年之久,而最早发布在互联网上的文章更是早在1997年.在我阅读的时候,很多事迹已经沉积为历史,很多预言已经成为现实.而这本书的意义却丝毫没有因此淡化,反 ...

  10. C# 反射遍历对象

    在项目中需要遍历各种对象,可以通过如下方法遍历. /// <summary> /// 返回对象字符串 /// </summary> /// <param name=&qu ...