小编dmb*_*dmb的帖子

在Symfony2中异步调用命令

我想从Symfony2中的Controller内异步调用命令.

到目前为止我找到了以下解决方案:

$cmd = $this->get('kernel')->getRootDir().'/console '.(new MLCJobWorkerCommand)->getName().' '.$job->getId().' 2>&1 > /dev/null';
$process = new Process($cmd);
$process->start();
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来实现这一目标?

编辑:

我需要Process在后台运行,Controller需要在启动前者后立即返回.我试过了:

$cmd = $this->get('kernel')->getRootDir().'/console '
     .(new MLCJobWorkerCommand)->getName()
     .' '.$job->getId().' 2>&1 > /dev/null & echo \$!';
$process = new Process($cmd);
$process->mustRun();
$params["processid"] = $process->getOutput();
Run Code Online (Sandbox Code Playgroud)

但是,在Process完成之前,Controller不会返回响应.

php symfony

8
推荐指数
1
解决办法
3195
查看次数

具有EntityType字段的Symfony 2.7 choice_attr

我需要为Symfony 2.7中的每个EntityType字段选择添加一个额外的HTML属性.

按照指南,我假设EntityType从ChoiceType继承此功能.我尝试了类似下面的内容,但没有效果; 没有mytype属性被添加到渲染的选择选项中.

$builder->add('customer_email', 'email')
        ->add('Product', 'entity', array(
              'class' => 'MyBundle:Product',
              'property' => 'name',
              'empty_value' => 'None',
              'required' => false,
              'choice_attr' => function ($val, $key, $index) {
                  return array('mytype' => $val->getType());
              }))
Run Code Online (Sandbox Code Playgroud)

php symfony-forms symfony symfony-2.7

5
推荐指数
1
解决办法
2664
查看次数

Nginx:登录多个条件

我正在尝试使用条件 access_logging 配置 nginx/1.13.0。

如果 access_logging 仅以 $status 代码为条件,则一切正常:

http {
     [..]
     map $status $logworthy_status {
         ~^[4]  1;
         default 0;
     }
     [..]
     server {
          [..]
          access_log  /var/log/nginx_access.log combined if=$logworthy_status;
          [..]
     }
}
Run Code Online (Sandbox Code Playgroud)

调试日志显示地图按预期运行:

2017/06/13 11:34:14 [debug] 23153#0: *203 http map started
2017/06/13 11:34:14 [debug] 23153#0: *203 http script var: "401"
2017/06/13 11:34:14 [debug] 23153#0: *203 http map: "401" "1"
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试重写此内容以允许此处建议的多个条件:

http {
     [..]
     map $status $logworthy_status {
         ~^[4]  1;
         default 0;
     }
     [..]
     server {
          [..]
          set $logworthy …
Run Code Online (Sandbox Code Playgroud)

logging conditional nginx

3
推荐指数
1
解决办法
1742
查看次数

openldap 与 lmdb;无法打开:没有这样的文件或目录

我正在尝试在 Linux 系统上使用 lmdb 后端配置 openldap-2.4.43 。到目前为止还没有成功。

slapd.conf:

include     /opt/openldap/etc/schema/core.schema
include     /opt/openldap/etc/schema/cosine.schema
include     /opt/openldap/etc/schema/inetorgperson.schema

allow bind_v2

pidfile     /var/run/slapd.pid
argsfile    /var/run/slapd.args

database    config
rootdn      "cn=Manager,cn=config"
rootpw      {SSHA}sMXtPWSAL9yEgDslsXMZiM+qgLJZW9VO

database    mdb
suffix      "dc=mydomain,dc=com"
rootdn      "cn=Manager,dc=mydomain,dc=com"
rootpw      {SSHA}sMXtPWSAL9yEgDslsXMZiM+qgLJZW9VO
directory   /var/openldap/data/main/
maxsize     10485760

index   objectClass         eq,pres
index   ou,cn,mail,surname,givenname    eq,pres,sub
Run Code Online (Sandbox Code Playgroud)

straced slaptest (/opt/openldap/sbin/slaptest -f slapd.conf -F ./slapd.d/) 结果(最后部分):

 stat("/var/openldap/data/main/", {st_mode=S_IFDIR|0700, st_size=40, ...}) = 0
 getpid()                                = 2440
 brk(0x828a000)                          = 0x828a000
 open("/var/openldap/data/main//data.mdb", O_RDONLY) = -1 ENOENT (No such file or directory)
 time(NULL)                              = 1453993047
 write(2, "56aa2c57 mdb_db_open: …
Run Code Online (Sandbox Code Playgroud)

ldap openldap lmdb

1
推荐指数
1
解决办法
3705
查看次数