不能让Yii向webbrowser显示错误.在配置的自定义错误处理程序配置:
'errorHandler' => array(
// use 'site/error' action to display errors
'errorAction' => 'site/error',
),
Run Code Online (Sandbox Code Playgroud)
但所有错误只写入application.log,然后Apache服务器空页写入错误500.如何在屏幕上显示Yii打印错误?
index.php:
// remove the following lines when in production mode
defined('YII_DEBUG') or define('YII_DEBUG', true);
// specify how many levels of call stack should be shown in each log message
defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);
Run Code Online (Sandbox Code Playgroud) 我正在使用Yii 1.1.14和php 5.3在centos 6上我使用CDbCommand从一个非常大的表中获取数据,结果集是10个列的~90,000条记录我将它导出到csv文件,文件大小是大约15MB,脚本总是崩溃没有任何错误消息,只有经过一些研究后我才发现我需要在php.ini中提高memory_limit才能成功执行脚本.唯一的问题是,为了成功执行,我必须将内存限制提高到512MB(!),这是很多!如果10个用户将执行相同的脚本,我的服务器将不会很好地响应...
我想知道是否有人可能知道使用Yii减少sql查询的内存消耗的方法?我知道我可以使用限制和偏移将查询拆分为多个查询,但15MB查询消耗512MB似乎不合逻辑.
这是代码:
set_time_limit(0);
$connection = new CDbConnection($dsn,$username,$password);
$command = $connection->createCommand('SELECT * FROM TEST_DATA');
$result = $command->queryAll(); //this is where the script crashes
print_r($result);
Run Code Online (Sandbox Code Playgroud)
任何想法将不胜感激!
谢谢,
我正在使用Yii 2框架,它使用了许多扩展异常,我遇到了问题,我扔了一个UserException但是它最终被基地抓住Exception但是我不确定为什么!?
代码:
try {
//........
if ($reader->count() > 0) {
if (!$already_active) {
//.....
} else {
throw new UserException('You have already activated your account; you may continue to login.');
}
}
} catch (\Exception $e) {
// User exception above is caught in here?
} catch (UserException $e) {
// Rethrow the exception
throw $e;
}
Run Code Online (Sandbox Code Playgroud)
不应该User Exception被传递到第二个并被第二个捕获catch?
我正在尝试使用Yii 2's UrlManager设置规则,我知道您可以在要传递的参数中使用正则表达式,例如:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [
'foo/<id:\d+>/?' => 'foo/view',
],
],
Run Code Online (Sandbox Code Playgroud)
以上工作正常,甚至可选/的最终因为?.
但是,我想知道如果我想在规则中的其他地方使用RegEx,但是我不需要它作为参数传递.....例如.
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [
'foo/([0-9a-zA-Z\-]+)\.<id:\d+>/?' => 'foo/view',
],
],
Run Code Online (Sandbox Code Playgroud)
以上不起作用.基本上我想支持URL,例如:
foo/some-name-123-end.99/
foo/some-name-123-end.99
Run Code Online (Sandbox Code Playgroud)
然后99(可以是任何数字)将作为id变量传递.
......或者我的RegEx有什么问题吗?
可以这样做吗?
工作环境:PHP5面向对象,MVC模式,Yii框架
购物车:每种产品的数量和价格列表.运输车的作用只是将产品放入其中,如果用户想要购买物品,则:
购物车手柄:
购物车不处理:
问题是:如何设计它是高效和安全的?
创建一个sql表并存储:
在mysql上创建一个事件,删除日期时间> 30分钟的每一行.
然后,为了获得购物车,您可以使用当前会话ID从表中获取所有项目,并创建一个foreach()来获取所有项目.
将所有购物车信息保存在cookie中
在我看来,选项1比选项2更安全但消耗更多的资源并且可能使SQL数据库暴露于攻击(创建溢出数据库的大量新会话).选项2暴露于cookie注入,但需要较少的资源并向用户公开信息.
还有其他/更好的方法吗?
我怎样才能将以下内容转换为yii2
$dependency = new CDbCacheDependency('SELECT count(*) FROM job_title');
$jobTitle = JobTitle ::model()->cache(CACHE_TIMEOUT,$dependency)->findAll($array);
$jobTitleList = CHtml::listData($jobTitle, 'job_title_id','desc');
return $jobTitleList;
Run Code Online (Sandbox Code Playgroud)
我有以下代码不起作用.
use yii\db\ActiveRecord;
use yii\helpers\ArrayHelper;
use yii\helpers\Html;
$items = array();
foreach (Jobsprocess::find()->where($array)->all() as $value) {
$items[$value->process_id] = $value->jobsprocess;
}
return $items;
Run Code Online (Sandbox Code Playgroud) 我正在使用Yii2创建RESTful API,并已按照快速入门教程*成功设置了名为Contacts的模型。我喜欢如何在不创建任何动作的情况下创建,列出,更新和删除记录。
但是我看不到如何过滤结果。我只想返回contact.user_id等于1的联系人(例如),因为它当前将回复所有记录。不创建动作就可以吗?
我也不确定如何限制结果。从我看过的内容来看,我觉得应该在URI后面加上?limit = 5。
我正在使用Humhub CMS作为新的社交网站.我已经安装好了,一切都很顺利.
但是,在登录/注册期间,页脚中有一个"Powered by HumHub"链接.我试图删除它,但找不到任何方法来摆脱它.Humhub由Yii框架开发.
有没有办法删除它?
我目前正在尝试使用foreach来使用我的事件模型中的关系返回所有地址.一切都很好,返回所有地址但会返回重复的结果.我尝试了array_unique,但不确定我的语法是否正确.
<?php
foreach ($data->events as $address) {
//array_unique($address, SORT_REGULAR);
echo $address->getAddressString() ."<br/> <br/>";
}
?>
Run Code Online (Sandbox Code Playgroud) 我正在尝试通过yii\bootstrap\Html发送参数.
echo Html::a('???????', ['/orders/order-create','freelancer_group'=>$_GET['freelancer_group']], ['class'=>'btn btn-lg btn-primary','data'=>['method' => 'post','derp'=>'herp'],]);
Run Code Online (Sandbox Code Playgroud)
但是,当我点击它仍然var_dump($_POST['derp']);是 NULL.我该如何发布?我在这里找到了它