标签: yii

Apache PHP/OSX Mavericks: - 无法打开流:打开的文件过多

我最近升级到OSX Mavericks,从那时起,我开始在我的开发机器上得到上述错误.代码中没有明显的问题(它是一个自动生成的Yii示例应用程序).作为升级到小牛队的一部分发生的事情是:

  1. PHP从与OSX Lion捆绑在一起的5.2.x升级到5.4.x.
  2. 我必须通过安装Zend Server获取Zend Debugger for PHP 5.4 ,拿起ZendDebugger.so并卸载Zend Server(所有这一切都是因为Zend没有为php 5.4.x提供独立版本的调试器).

从那时起,我在加载和重新加载网站几次之后就遇到了这个问题.发生此错误后,我的Web服务器将继续为localhost上托管的任何其他应用程序返回相同的错误.我必须提到静态网页服务很好.

我见过几个线程关于这一主题.大多数人都指出代码中的问题是文件句柄未正确关闭,从而超过了打开文件限制阈值.我也发现这个线程似乎暗示这可能是一个zend调试器问题.还有针对php 5.2.x提交的错误报告.在这里的帖子之后,我尝试了以下内容:

$ ulimit -a
Run Code Online (Sandbox Code Playgroud)

报道:

open files (-n) 256
Run Code Online (Sandbox Code Playgroud)

也,

sysctl -a | grep files
Run Code Online (Sandbox Code Playgroud)

回报,

kern.maxfiles = 12288
kern.maxfilesperproc = 10240
kern.maxfiles: 12288
kern.maxfilesperproc: 10240
kern.num_files: 3248
Run Code Online (Sandbox Code Playgroud)

另一个有趣的线程建议使用以下方法提高此限制(目前为256):

ulimit -n 1024
Run Code Online (Sandbox Code Playgroud)

我已经尝试了一切,但似乎没有任何工作.问题也不能始终如一地重现.

我想知道使用ulimit -n 1024是否会影响apache,因为从我读过的内容来看,它会影响shell可以打开的文件数量.

任何帮助表示赞赏.

编辑:

  1. 重启apache有一点帮助,直到再次遇到错误.
  2. 让Web服务器空闲一点(没有确定的间隔)也有帮助.

php apache macos yii

21
推荐指数
3
解决办法
2万
查看次数

Active Record中的Yii2子查询

如何将此sql转换为活动记录查询

SELECT * FROM `base_twitter` WHERE id NOT IN (SELECT base_id from base_followers)
Run Code Online (Sandbox Code Playgroud)

yii yii2

21
推荐指数
2
解决办法
3万
查看次数

我应该如何为将在selenium服务器上运行的Yii Web应用程序编写功能测试?

我目前正在为我的新项目建立一个开发环境,我正在考虑一件事.我打算使用Yii.我希望自动化功能测试,我已经有了gerrit和Jenkins,工作.

我读了这篇文章,发现selenium有类似html套件的东西.我之前从未听说过,我总是编写我的测试来通过PHPUnit运行.我使用了这里描述的默认Yii功能测试环境.

所以我的问题是,这两种方法的优点和缺点是什么?我已经可以想到一个html套件的pro和con.Pro是,编写测试非常简单 - 只需在Selenium IDE中"单击"它们即可.问题是,我可能不得不在测试之前运行数据库固件,我无法更改它们,或运行它们 - 加载夹具,运行测试,加载夹具,运行测试,但我想这将使测试更多更模糊.您如何看待/您在这方面的经历是什么?

selenium selenium-ide functional-testing yii htmlsuite

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

保护php api在android应用程序中使用

我是android开发的新手.我正在android studio用于开发应用程序.我做过的事情

  1. 在其中创建了一个DB包含两个表的表MySQL.
  2. api's为两者GETPOST方法创建了两个单独的.
  3. 成功访问了两者 api's

我现在取得的成就

  1. 能够GET获得GET数据api.
  2. 能够POST使用POST 进行数据处理api

我现在要做什么

我希望我的api在线发布,即我想将我的服务部署到服务器并访问它们.此时,我能够在服务器上部署服务并访问它们.

现在我希望我的服务(api's)得到保护.为此我搜索了很多文章并找到了两种方法.

  1. 使用yii框架.有人告诉我使用它,因为它自动保护了api's.但我不确定它是否成功.
  2. 手动保护 api's

至于点1,框架将是有用的,但它对我来说是新的,它需要时间与它合作,因为我已经创建了Web服务.

为了点2我得到了一些信息

  1. 使用HMAC_SHA1
  2. 使用PHP检测移动设备

两个链接似乎都很好,但链接1并没有给我很多信息.

显然我想要保护我的两个 api's

现在是代码部分

GET_DATA.php

require_once ('config.php');

$sql = "SELECT * FROM users";


$r = mysqli_query($con,$sql);

$result = array();

while($row = mysqli_fetch_array($r)){
array_push($result,array(
    'Id'=>$row['Id'],
    'Name'=>$row['Name']
));}
Run Code Online (Sandbox Code Playgroud)

echo json_encode(array('users'=> $ result)); …

php mysql api android yii

20
推荐指数
2
解决办法
9855
查看次数

如何在findAll中使用'IN(1,2,3)'?

我需要从数据库中获取几个学生,并将其主键放在以逗号分隔的字符串中.

通常使用SQL会是这样的:

$cleanedStudentIdStringList = "1,2,3,4";
SELECT * FROM Student WHERE id IN ($cleanedStudentIdStringList)
Run Code Online (Sandbox Code Playgroud)

Yii的ActiveRecord似乎在生成的SQL语句中围绕绑定参数插入单引号,这会导致查询在使用参数绑定时失败.

这有效,但不使用安全参数绑定.

$students = Student::model()->findAll("id IN ({$_POST['studentIds']})");
Run Code Online (Sandbox Code Playgroud)

有没有办法仍然使用参数绑定并在单个查询中只获取几行?

activerecord yii

19
推荐指数
2
解决办法
2万
查看次数

Yii $ form-> textfield,如何设置默认值?

所以我正在摆弄Yii框架,在其中一个视图中,特别是创建表单,我试图给我的一个文本字段一个默认值.因此,当我进入我的创建页面时,值已经预先加载到表单上.

这是我目前的代码

<div class="row">
    <?php echo $form->labelEx($model,'teamlead'); ?>
    <?php echo $form->textField($model,'teamlead',array('size'=>50,'maxlength'=>50,'value'=>Yii::app()->user->getUsername(),'disabled'=>'disabled')); ?>
    <?php echo $form->error($model,'teamlead'); ?>
</div>
Run Code Online (Sandbox Code Playgroud)

当我按下创建时,Yii给我一个错误,告诉我textField有空?除了设置值之外,我不知道还能做什么.我还想设置模型属性吗?

yii

19
推荐指数
5
解决办法
9万
查看次数

加快YII应用程序的最快方法?

我刚刚开始使用YII并设法完成我的第一个应用程序.不幸的是,发布日已经结束,我希望这个应用程序超级快.到目前为止,我遇到的加速它的唯一方法是标准缓存.还有哪些方法可以加快我的应用程序?

php performance yii

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

MYSQL查询执行速度很慢

我开发了一个用户批量上传模块.有两种情况,当我在数据库没有记录时批量上传20 000条记录.它需要大约5个小时.但是当数据库已经有大约30 000条记录时,上传速度非常慢.上传20 000条记录大约需要11个小时.我只是通过fgetcsv方法读取CSV文件.

if (($handle = fopen($filePath, "r")) !== FALSE) {
            while (($peopleData = fgetcsv($handle, 10240, ",")) !== FALSE) {
                if (count($peopleData) == $fieldsCount) {

//inside i check if user already exist (firstName & lastName & DOB)
//if not, i check if email exist. if exist, update the records.
//other wise insert a new record.
}}}
Run Code Online (Sandbox Code Playgroud)

以下是运行的查询.(我正在使用Yii框架)

SELECT * 
FROM `AdvanceBulkInsert` `t` 
WHERE renameSource='24851_bulk_people_2016-02-25_LE CARVALHO 1.zip.csv' 
LIMIT 1

SELECT cf.*, ctyp.typeName, cfv.id as customId, cfv.customFieldId, 
       cfv.relatedId, cfv.fieldValue, …
Run Code Online (Sandbox Code Playgroud)

php mysql sql yii database-performance

19
推荐指数
3
解决办法
3063
查看次数

Yii框架:控制器/动作URL和参数

在我的应用程序,我ApiControlleractionUsers,所以在YII的路径变得api/users.现在为了获得某些用户信息,我使用以下路径api/users/id/10,其中10是userID,id路径的一部分基本上是GET参数(api/users?id=10).

有没有办法在没有id路径的情况下做同样的事情,即我希望我的路径看起来像api/users/10

谢谢!

php url path yii

18
推荐指数
1
解决办法
4万
查看次数

如何在Yii2中添加更多用户身份会话属性?

在Yii2中,您可以使用\ yii\web\User类中的identityInterface对象访问当前用户的标识界面,使用类似这样的内容

 \Yii::$app->user->identity->id;
Run Code Online (Sandbox Code Playgroud)

有没有办法获取和设置其他参数(不扩展标识类)?

基本上相当于Yii 1.x getState(),以及存储和检索会话信息的setState()方法CWebUser

Yii::app()->user->setState("some_attribute",$value);
Yii::app()->user->getState('some_attribute',$defaultValue);
Run Code Online (Sandbox Code Playgroud)

php yii yii2

18
推荐指数
3
解决办法
3万
查看次数