我遇到了symfony2会话组件的问题.我通过会话容器将一些数据设置为会话,如下所示:
$sess = $this->get( 'session' );
$sess->set( 'some_key', 'some_value' );
Run Code Online (Sandbox Code Playgroud)
但经过一段时间(大约15-20分钟)后,会议就丢失了.
我可以设置会话生存时间参数吗?对我而言,完美的变体就是如果我可以设定一定的会话时间......有人可以帮忙吗?
我认为在代码示例中查看问题要比首先编写问题容易得多.这是我的PHP代码:
<?php
interface AnInterface
{
public function method();
}
class AClass implements AnInterface
{
public function method()
{
echo __METHOD__;
}
}
abstract class AnAbstractClass
{
abstract public function method( AnInterface $Object );
}
class ConcreteClass extends AnAbstractClass
{
public function method( AClass $Object )
{
$Object->method();
}
}
$Object1 = new ConcreteClass();
$Object2 = new AClass();
$Object1->method( $Object2 );
Run Code Online (Sandbox Code Playgroud)
上面的代码导致以下错误:
致命错误:ConcreteClass :: method()的声明必须与AnAbstractClass :: method()的声明兼容
问题是php似乎没有将AnAbstractClass :: method和ConcreteClass :: method的签名识别为兼容.难道我做错了什么?谢谢!
我的情况如下:
我有一个VM(Ubuntu服务器13.04)与PHP 5.4.9-4ubuntu2.2,nginx/1.2.6,php5-fpm和Xdebug v2.2.1.
我正在使用PhpStorm 6.0.3开发一个应用程序(我在VM上部署).
我的问题是,每当我尝试启动调试会话时,IDE都不会从Web服务器获取连接请求(因此,会话永远不会启动).
我查看了很多关于xdebug配置的建议,但没有发现任何有用的东西.
我最近意识到,如果我通过浏览器自己设置XDEBUG_SESSION cookie(感谢FireCookie),我可以调试我的应用程序...所以我的猜测是有一些东西阻止网络服务器将cookie发送回客户端.
问题是,我在不同的项目中使用相同的IDE配置,该项目部署到不同的基于CentOS的VM(使用lighttpd),并且工作得很好.
我试图将我当前的项目部署到这样的VM(将Web服务器更改为NginX)并且它工作正常(不幸的是我丢失了该VM并且无法检查配置:().
所以...这是我的NginX配置:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name localhost;
location / {
try_files $uri $uri/ /dispatch.php;
}
#
location ~ \.php$ {
root /var/www/bresson/web;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index dispatch.php;
fastcgi_param SCRIPT_FILENAME /var/www/$fastcgi_script_name;
include fastcgi_params;
#fastcgi_pass 127.0.0.1:9009;
}
}
Run Code Online (Sandbox Code Playgroud)
fpm config(/etc/php5/fpm/pool.d/www.conf):
listen = /var/run/php5-fpm.sock
Run Code Online (Sandbox Code Playgroud)
xdebug.ini:
zend_extension=/usr/lib/php5/20100525/xdebug.so
xdebug.remote_port=9000
xdebug.remote_enable=On
xdebug.remote_connect_back=On
xdebug.remote_log=/var/log/xdebug.log
Run Code Online (Sandbox Code Playgroud)
任何想法将不胜感激.谢谢!
编辑:
我尝试的另一件事是从php开始一个会话,我看到会话cookie创建没有任何问题...
第二编辑:
我想我找到了问题所在:URI.
我写了另一个脚本,以尝试配置参数和东西(更简单的一个),它工作正常!
所以最终我认为问题是查询参数(即:) XDEBUG_SESSION_START=14845没有达到我的脚本.
问题是我的起始URI,它是形式的/images/P/P1/P1010044-242x300.jpg.通过一些虚拟主机配置,我应该能够将其路由到类似的东西/dispatch.php/images/P/P1/P1010044-242x300.jpg,并使用URI的其余部分作为参数.所以...我本身没有找到解决方案,但现在我有一个可行的解决方法(指向我的起始URL /dispatch.php),这将暂时做到这一点.谢谢
我有一个多维数组,比如x列数和y行数.
我特别想要第3列中的所有值.
这样做的显而易见的方法是将它放在这样的for循环中
for(i=0;i<y-1;i++)
{
$ThirdColumn[] = $array[$i][3];
}
Run Code Online (Sandbox Code Playgroud)
但是这里涉及O(n)的明显时间复杂性.有没有内置的方法让我只需从数组中提取每一行而无需循环.
例如(这不适用)
$ThirdColumn = $array[][3]
Run Code Online (Sandbox Code Playgroud) 我几乎到处搜索,但我找不到任何东西.
是否有一个命令或程序来更改表的名称(所以在doctrine内部注释)而不丢失数据?
基本上,会产生类似的东西
RENAME TABLE old_table TO new_table;
Run Code Online (Sandbox Code Playgroud)
要么
ALTER TABLE old_table RENAME new_table;
Run Code Online (Sandbox Code Playgroud)
MySQL命令取自这里
我应该手动编写迁移文件doctrine:migrations:generate吗?
我最近在我的SendGrid帐户中创建了一个模板,我想在我的php应用程序中使用它.
我目前正在使用该帐户发送电子邮件,但我必须在我的应用程序内编码html,这不能提供我需要的灵活性.
我在API中找不到一个方法来选择我想要使用的模板并替换变量....
任何的想法?
谢谢
我正在开发一个使用几种形式的Symfony2应用程序.表单中的数据使用Doctrine2持久保存到MySQL数据库中.我使用Symfony注释对实体设置了一些约束.现在,当用户无法在表单中输入适当的数据时,他会得到一条错误消息,但是,当我尝试使用Command对象操作相同的实体时,我不会得到任何异常或错误.
从我阅读的文档中,Symfony和Doctrine的验证工作作为单独的机制,现在......有没有办法让它们作为一个整体工作?我试图避免的是为实体对象编写相同的验证,以便将它们用作前端和后端验证.谢谢.
一个朋友向我展示了一个由COM对象和SOAP接口构成的API。他向我展示了它如何在Windows上的php中工作,但是我严重怀疑它是否可以在linux或任何其他非Windows操作系统上实现。谢谢!