我想在登录页面中为我的登录表单操作(作为查询)添加重定向URL,因此在登录后,可以访问他或她正在浏览的上一页.
首先,我考虑使用Zend Session并将每个页面的url保存在变量中.但我在文档中读到它有开销.那么,有更好的方法吗?或者是否有其他方式使用zend会话而没有开销?
我正在使用zend创建一个Web应用程序,在这里我创建了一个接口,用户A可以从该接口向多个用户发送电子邮件并且它工作正常,但它会缩短执行时间,因为用户A等待太多"已确认的回复"(将在电子邮件发送后显示).
在Java中有"线程",通过它我们可以执行该任务(发送电子邮件)并且它不会减慢其余应用程序的速度.
在PHP/Zend中是否有任何技术就像在Java中一样,我们可以将我们的任务分开,这可能需要很长时间,例如:发送电子邮件.
我不是一个巨魔,我的目标不是开始一场火焰战; 我不是不尊重Zend框架的作者:它有很多很好的工作.但是......我有一份工作要完成,而且我很难协调ZF的受欢迎程度与使用它构建应用程序的现实.我真的想知道其他人为什么使用Zend Framework.
我对PHP世界还很陌生,但我已经用很多语言做了很多编程.在阅读了许多教程并在其中构建了几个应用程序后,一些核心Zend Framework工具对我来说就像是alpha代码.对我来说,下面的根本性缺陷,等等,似乎过于庞大考虑部署它的应用程序-但一遍又一遍的ZF建议为一体的,如果不是在领先的框架.
首先让我说我发现ZF的大部分是可行的.路由工作非常适合,布局工具是可维护的(虽然与模板系统(如JSP/ASP)非常不同),缓存设施等也是如此.社区中似乎有一种趋势,即填充大量建模(例如验证)和查看逻辑(例如$ this-> headScript() - 为什么我的控制器必须关心我的视图需要哪个js文件?)到控制器中但可能是使用问题而不一定是框架的错误.
现在,我在短时间内遇到了一些非常严重(IMO)的弱点.如果我继续用它构建,我会想象未来我会发现的其他领域.
1.表单布局
许多人似乎对缺乏对表单布局的控制感到不满.你怎么能有一个流行的框架,构建一个简单的表单需要这么多的讨论?
问题1和问题2.
2.认证/授权
似乎没有人真正理解如何简单地执行例行认证/授权.人们[包括你的人]真正努力实现简单的访问控制.此外,该方法似乎依赖于持久性的序列化,而不是传统的用户和权限的数据库存储.
一个令人困惑的例子,一个建议,增加设施,教程-第一部分,
和第二部分.这是太多的工作家伙!
我认为的弱点是不真实的还是某种程度上不是问题?为什么或者为什么不?你为什么选择Zend Framework(或不)?您是否发现其他区域如此痛苦以至于您想要将ZF转换为其他方法?谢谢你的意见.
//excerpt
$file = new Zend_Form_Element_File('file');
$file->setLabel('File to upload:')
->setRequired(true)
->addValidator('NotEmpty')
->addValidator('Count', false, 1)
->setDestination(APPLICATION_UPLOADS_DIR);
$this->addElement($file);
Run Code Online (Sandbox Code Playgroud)
//excerpt
if ($form->isValid($request->getPost()) {
$newFilename = 'foobar.txt';
//how should I rename the file?
//When should I rename the file? Before or after receiving?
try {
$form->file->receive();
echo 'filename: '. $form->file->getFileName();
}
}
Run Code Online (Sandbox Code Playgroud)
当我调用$form->file->getFileName()它时,返回完整路径,而不仅仅是文件名.如何仅输出文件名?
//Answer: First, get an array of the parts of the filename:
$pathparts = pathinfo($form->file->getFileName());
//then get the part that you want to use
$originalFilename = $pathparts['basename'];
Run Code Online (Sandbox Code Playgroud)如何将文件名重命名为我想要的名称?这可以 …
我认为执行的顺序是init(),preDispatch()然后调用action().
我应该在init()或preDispatch()中初始化我的所有操作中常见的变量吗?我见过有人使用这两个函数进行初始化.可能顾名思义它应该在init()中完成,但是在preDispatch()中会有什么样的东西?
init()和preDispatch()函数调用之间会发生什么?
我们的软件为我们的业务提供了近16,000个PHP文件.这是一个绝对庞大的系统.Zend Studio需要几个小时来运行DLTK索引.
我无法找到最新的响应,但必须有一种方法可以禁用它,或将其限制在特定的目录中.
此外,这个过程到底在做什么?
谢谢.
我正在使用Zend_Db在事务中插入一些数据.我的函数启动一个事务,然后调用另一个也尝试启动事务的方法,当然也失败了(我正在使用MySQL5).所以,问题是 - 我如何检测到该交易已经开始?以下是代码示例:
try {
Zend_Registry::get('database')->beginTransaction();
$totals = self::calculateTotals($Cart);
$PaymentInstrument = new PaymentInstrument;
$PaymentInstrument->create();
$PaymentInstrument->validate();
$PaymentInstrument->save();
Zend_Registry::get('database')->commit();
return true;
} catch(Zend_Exception $e) {
Bootstrap::$Log->err($e->getMessage());
Zend_Registry::get('database')->rollBack();
return false;
}
Run Code Online (Sandbox Code Playgroud)
在PaymentInstrument :: create中,还有另一个beginTransaction语句,它产生一个异常,说明该事务已经启动.
我想故意在我的Zend Framework应用程序中的一个控制器中导致404错误.我怎样才能做到这一点?
我收到的错误很多,就像这个:
Zend_Session_Exception: Session must be started before any output has been sent to the browser; output started in /usr/local/zend/share/pear/PHPUnit/Util/Printer.php/173
Run Code Online (Sandbox Code Playgroud)
运行我的应用程序的测试套件时.这是PHPUnit 3.5.10和PHP 5.3.5.
没有神秘的,意外的空白输出导致这种情况.我已经确定"发送到浏览器的输出"是正在执行的PHPUnit测试的实际输出.如果我打开PHPUnit/Util/Printer.php并print $buffer用if (strpos($buffer, 'PHPUnit 3.5.10 by Sebastian Bergmann') === false)(包括从PHPUnit中有效地停止输出的第一行)包装该行,那么我的第一个测试成功(直到测试用例输出一个指示测试成功的点,然后是下一个测试失败,因为输出了点).
我团队中的另一位开发人员能够成功运行完整的测试套件,因此我知道这不是应用程序代码的问题.它必须是我的本地环境的一些配置设置或问题.
我已经检查过php.ini来验证是否output_buffering已打开并implicit_flush关闭,它们是.
我也尝试添加Zend_Session::$_unitTestEnabled = true;到我的测试引导程序,但这没有帮助(并且不应该是必要的,因为它适用于另一个开发人员的机器和我们的CI服务器上没有它).
除了忽略错误之外的任何建议?我从来没有见过这样的东西,我真的很茫然.
谢谢!
更新:
为了尝试进一步隔离问题,我通过执行以下测试脚本将ZF和我的应用程序排除在外:
<?php
class SessionTest extends PHPUnit_Framework_TestCase
{
public function testSession()
{
session_start();
$this->assertTrue(true);
}
}
Run Code Online (Sandbox Code Playgroud)
测试失败:
1) SessionTest::testSession
session_start(): Cannot send session cookie - headers already sent by (output started …Run Code Online (Sandbox Code Playgroud) 有一个opcache.optimization_level php.ini指令.它是默认的位掩码0xffffffff- 因此默认情况下OPcache会执行所有优化.
OPcache做了哪些优化?传递字节码的是什么?
后续问题:OPcache可以很好地优化代码模式吗?例如,HHVM可以跳过仅包含类/函数声明的文件的执行,它只填充类/函数表.
zend-framework ×10
php ×7
eclipse ×1
file-upload ×1
mysql ×1
opcache ×1
pdo ×1
performance ×1
phpunit ×1
redirect ×1
session ×1
transactions ×1
url ×1
zend-file ×1
zend-session ×1
zend-studio ×1