我正在尝试编写一个cronjob控制器,所以我可以调用一个网站并执行所有模块cronjob.php.现在我的问题是我该怎么做?
卷曲是一种选择,所以我也可以计算错误和成功吗?
[更新]
我想我还没有解释得够.
我想要做的是有一个文件,我可以从http:// server/cronjob调用,然后让它执行每个/application/modules/*/controller/CronjobController.php或者有另一种方法这样做所有的cronjobs不在一个地方,而是在模块所在的同一个地方.这将为我提供优势,如果模块不存在,它不会尝试运行其cronjob.
现在我的问题是你将如何执行CronjobController的所有模块,或者你会以完全不同的方式执行它,因此它仍然保持模块化?
我希望能够分发出多少cronjobs成功运行,有多少没有
我有一个数组的信息看起来或多或少像这样:
$data[] = array('content'=>'asd');
$data[] = array('content'=>'asdf');
Run Code Online (Sandbox Code Playgroud)
我想将两个条目添加到数据库中.
$db->insert('table', $data);
Run Code Online (Sandbox Code Playgroud)
不添加两个条目.我究竟做错了什么?我必须使用Zend_ Db_Table吗?
$data = array('content'=>'asdf');
$db->insert('table', $data);
Run Code Online (Sandbox Code Playgroud)
当然是有效的
我正在翻新一个我已经工作了很多年的大型CMS.产品本身很棒,但是一些组件,例如数据库和翻译类,需要紧急更换 - 部分是自制的,早在2002年,随着时间的推移会变得有点混乱,并且在安全审计中可能会遇到麻烦.
所以,我一直在密切关注一些框架(或者更确切地说,组件库,因为我不打算改变CMS的基本结构),最终还是喜欢Zend Framework.他们提供了一个坚实的MVC模型,但不强迫你进入它,他们提供了很多专业组件,显然已经得到了很多关注(你知道俄语有多个复数,你不能使用它们翻译它们一个简单的($number == 0) or ($number > 1)开关?我没有,但是Zend_Translate可以处理它.只是为了说明图书馆似乎已经建立的彻底程度.)
我现在确实处于不可逆转的状态,开始用Zend制造的系统替换系统的关键组件.我真的没有第二个想法 - 我肯定不想煽动火焰战 - 但在继续之前,我想退一步看看是否有任何反对将一个大系统与Zend紧密联系起来的事情框架.
我喜欢Zend:
我一直在考虑将ZF的功能封装和抽象到自己的类中,以便能够更轻松地切换框架,但我们得出的结论是,这不是一个好主意,因为:
因此,对采埃孚的承诺将是深刻的.因此我的问题:
是否有任何实质性的反对承诺Zend框架?
你是否已经知道Zend Inc.的计划在2011年变得邪恶,并使其成为一个封闭的源库?Zend Inc. 是由吸血鬼经营的吸血鬼经营者想要占领地球吗?(评论中确定Zend实际上是由吸血鬼运行的.)当你将所有项目都转换为代码库时,是否存在概念缺陷?质量代码的外观是否是幻觉?代码看起来不错,但在我的四核工作站下面运行的速度非常慢吗?
接受答案
非常感谢大家的详细反馈.我希望我可以设置一个赏金,并在所有回答者之间平均分配.
在对ZF有利的许多意见中,有一个非常有根据的反对.我认真对待并密切关注替代方案,主要是Yii和Kohana.通过这种比较以及阅读关于ZF和竞争产品的更多观点,我可以看到,与更简约的框架相比,Zend可以在某些领域被视为臃肿.(我也可以看到,这种"膨胀"主要是有充分理由提供最大的灵活性.但是,你是否需要最大的灵活性并处理随之而来的复杂性,或者采用更简单的方法和明确的指导方针的问题是有效的.)
无论如何,我将为手头的项目选择Zend,因为我对框架的主要用途是作为组件库.我不想采用Zend的MVC模型,我只需要高质量的组件来进行国际化,会话处理等等.因为我正在构建可再发行的产品,所以Zend的灵活性(例如支持五种不同的字典格式)受到欢迎.此外,ZF似乎是唯一允许我想要的自由程度的框架(没有强制使用模式,文件结构......),据我所知,没有其他框架提供.
对于我希望在其中使用实际MVC功能的未来项目,并完全服从框架关于应用程序构建,命名,样式和过程的约定,我可能不一定会选择Zend,而是为了更简约像Yii或Kohana这样的框架.
扩展问题:为什么我应该使用数据映射器/ Db_Table_Row,因为DbTable能够处理大多数数据操作的基本任务.
我目前正在学习ZF v1.11
对于数据库操作,我为每个表创建了DbTable.例如,"users"表由Application_Model_DbTable_Users表示,其中没有附加代码.
在操作数据时,我可以使用:
<?php
$uTable = new Application_Model_DbTable_Users();
$newUid = $uTable->insert(array('name'=>'Old Name', 'email'=>''));
$user = $uTable->find($newUid)->current();
// Then I can use $user which is instance of Table_Row
$user->name = "New Name";
$user->email = "email@addr.com";
$user->save();
Run Code Online (Sandbox Code Playgroud)
我的问题是,何时需要定义一个行类(假设在ZF-Tutorials中将Table_Row称为DataMapper)
// By, adding this to the DbTable class
protected $_rowClass = 'Application_Model_User';
Run Code Online (Sandbox Code Playgroud)
为每个实体设置Row类有什么好处?任何人都可以指出我的最佳做法.
我有一个带有Doctrine 1的应用程序,我通过生成update_datetime对象的字段new Zend_Date->getIso().它工作得很好多年,但现在我得到了一个新的笔记本和Doctrine尝试插入DATETIME字段作为字符串"2013-07-12T03:00:00+07:00"而不是正常的MySQL日期时间格式"2013-07-12 00:00:00",这是完全奇怪的.
同样的代码在另一台计算机上运行得很好.一切都几乎相同 - 两者都是MySQL 5.6.12,PHP 5.3.15.知道我应该在哪里看?
Fatal error: Uncaught exception 'Doctrine_Connection_Mysql_Exception' with message 'SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '2013-07-12T03:00:00+07:00' for column 'nextrun' at row 1' in library/Doctrine/Connection.php:1083
UPDATE
好的,在StackOverflow社区的帮助下,我终于解决了它.问题STRICT_TRANS_TABLES在于sql_mode变量.但是改变它/etc/my.cnf似乎还不够,所以我必须运行mysql -uroot并键入以下内容:
set sql_mode=NO_ENGINE_SUBSTITUTION; set global sql_mode=NO_ENGINE_SUBSTITUTION;
因此删除 STRICT_TRANS_TABLES
UPDATE2 如何永远摆脱STRICT?如何在MySQL中摆脱STRICT SQL模式
我正在写一个动作帮助器,我需要从该帮助器中调用另一个动作帮助器.但我不知道怎么做.这里是示例代码:
class Common_Controller_Action_Helper_SAMPLE extends Zend_Controller_Action_Helper_Abstract
{
protected $_view;
public function __construct(Zend_View_Interface $view = null, array $options = array())
{
$this->_view = $view;
}
public function preDispatch()
{
$flashMessenger = $this->_helper->FlashMessenger; // IT IS NULL
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用像这样的选择,它成功获取记录:
$table = new Bugs();
$select = $table->select();
$select->where('bug_status = ?', 'NEW');
$rows = $table->fetchAll($select);
Run Code Online (Sandbox Code Playgroud)
但现在我想更新相同的记录.例如在简单的MySQL中.
UPDATE TableName Set id='2' WHERE id='1';
Run Code Online (Sandbox Code Playgroud)
如何在Zend中执行以上查询?
谢谢
我想知道Zend Framework中引导程序的真正目的是什么.
Bootstrap类有哪些方法?
任何教程链接都可能有用......如果问题太模糊,请原谅我.我正在尝试学习Zend,但教程和书籍正在跳过步骤,它们在框架网站中并不那么清晰.我可以从快速入门中学到的是,它有助于启动会话.
我是否认为在任何控制器加载之前引导程序首先运行?我可以在bootstrap中编写任何我需要从头开始加载的方法吗?如何在控制器中访问这些引导程序?
我需要一些URL重写的帮助.案件与此类似.
我有一个有效的Zend Framework网站.现在我必须在Wordpress中添加一个博客(也在工作).我选择不沉迷于ZF控制器/行动/路线制作; 我已经看过几个关于这个的教程,我认为它们太过于"简单"的重定向.现在,关于那个"重定向"......
它应该是这样的:
www.site.com(指向/var/www/zf) www.site.com/blog(指向/var/www/wp)我知道我应该停止www.site.com/blog进入ZF的内脏,我现在正在使用RewriteRule ^blog - [NC,L]它的.htaccess,但这就是它.正如@jason所说,"只是把它传递给Wordpress",但我不知道究竟是怎么做到的.
相关问题:
我从未尝试过,但Apache是否在两个不同的虚拟主机中支持此功能?
ServerName www.site.com(ZF站点的
ServerName www.site.com/blogvhost )(WP站点的vhost)
REST API和普通API(打印JSON响应)之间有什么区别?
zend-framework ×10
php ×8
mysql ×3
zend-db ×2
apache ×1
api ×1
cron ×1
database ×1
doctrine ×1
doctrine-1.2 ×1
mod-rewrite ×1
rest ×1
sql ×1
virtualhost ×1
wordpress ×1