从开发的角度来看,我一直在阅读伟大的codeigniter.我确信使用该框架将使开发过程更快.但我问自己的问题是,单独制作的框架会不会满足您的需求?
CI虽然广告占用空间很小,却会"陷入困境",因为它基本上是一个框架框架(后面指的是PHP作为C的框架)?有没有很好的方法来分散负载?在CI中,是否存在任何大型应用程序?
谢谢卡斯帕尔.
我已经在CodeIgniter中建立了一个社交社区网站,它现在得到了相当多的流量,托管公司已经开始抱怨并说数据库正在接收空连接以及未关闭的连接.
我不完全确定什么是空查询或最终会如何发布,任何想法?
我添加了额外的代码,以在代码到达时强制关闭连接,但显然这不起作用.
任何人都可以提供任何建议,如何查看或开始调试这样的问题?
谢谢
我的核心底部有以下内容 MY_Controller
public function __destruct() {
$this->db->close();
}
Run Code Online (Sandbox Code Playgroud) 我的CodeIgniter应用程序使用会话库并将数据保存到数据库.
我遇到了一些问题,在某个ajax调用之后会创建空白会话.
经过调查,似乎有2个同时发生的函数调用需要进行会话验证.一个人会失败而另一个会没事的.
我能够通过不让它们同时发射来解决这个问题.但我仍然不明白原因为什么它会失败.是否与一次更新用户cookie和第二次呼叫失效有关?或者也许在阅读数据库时它会以某种方式死掉?
我稍微查看了Session核心类,但没有发现任何线索.
如果有任何人遇到同样的问题,我会感激任何关于如何调试或原因是什么的建议.
谢谢!
编辑:
我原本说有408状态回归.这是一个无关的案例.
这是并行触发MyVar.refresh()的函数:
function (event)
{
var self$ = this.a$;
var uid = this.b$.val();
var tid = this.c$.val();
var jqxhr = $.post('/controller1/index',{'uid':uid,'tid':tid,'action':true},function(re)
{
if(re.message != 'success')
{
MyVar.alert('<span class="msg_error sprite"></span>' + re.error);
MyVar.refresh();
}
},'json');
MyVar.refresh();
return stopDefault(event);
};
Run Code Online (Sandbox Code Playgroud)
可能的解决方案:
发现这个:http://codeigniter.com/forums/viewthread/102456/
显然它与ajax不能很好地配合.一种解决方案是,如果是ajax调用,则禁止会话更新; 唯一的问题是我们的网站大多是用ajax构建的..
另外,只是将sess_time_to_update降低到非常频繁的状态,并且ajax做得很好.还做了浏览器刷新,它没有超时.不确定为什么会话ID在ajax调用时已经更改,并且浏览器cookie从未更新过.
我已经显示了包含记录和"删除"图像的表格.在删除图像上单击我将使用ajax删除记录.如果我删除ID = 40的记录,则有三条记录,其中ID为40,41,42,响应返回"1"并且记录被删除,下次如果我再次点击删除图像则再次返回"1".
codeigniters db-> delete()方法总是返回"1"?我是否需要手动检查记录是否存在然后继续删除?下面是我的代码iin ajax.php
$res = $this->db->delete(tbl_user_groups, array('owner_id' => $admin,'user_group_id'=>$gid));
if($res) echo json_encode (array("success"=>"true"));
else echo json_encode (array("success"=>"false"));
Run Code Online (Sandbox Code Playgroud) 我创建了一些实用功能,就像一个h()充当echo htmlentities($var).我希望这些功能随处可用.所以我把它放在哪里.
我在codeigniter中有简单的数据库查询,但是我无法使用通配符进行搜索.这是我的代码:
$this->db->like('film.title',"%$query%");
$this->db->escape_like_str($query);
$res = $this->db->get('film');
Run Code Online (Sandbox Code Playgroud)
如果我删除通配符(%),那么搜索工作正常.$ query也只是用户输入的字符串.任何帮助表示赞赏.
如何使用CodeIgniter遍历和显示以下JSON中的名称?
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Search extends CI_Controller {
public function index()
{
$json = '[{"name": "John Doe",
"address": "115 Dell Avenue, Somewhere",
"tel": "999-3000",
"occupation" : "Clerk"},
{"name": "Jane Doe",
"address": "19 Some Road, Somecity",
"tel": "332-3449",
"occupation": "Student"}]';
for (int $i = 0; $i < $json.length; $i++){
???
}
//$obj = json_decode($json);
//$this->load->view('search_page');
}
}
/* End of file search.php */
/* Location: ./application/controllers/search.php */
Run Code Online (Sandbox Code Playgroud) 我正在执行以下代码登录尝试,我想获取本地机器的IP地址..
if ( !$this->session->userdata('login_attempts') )
{
$this->session->set_userdata('login_attempts', 0);
}
$attempts = ($this->session->userdata('login_attempts') + 1);
$this->session->set_userdata('login_attempts', $attempts);
// Check if the session.
if ( $this->session->userdata('login_attempts') > 4 )
{
echo 'hi....login attempt is over';
}
// Failed. So, update the session
echo $ip = $_SERVER['REMOTE_ADDR'];
// $ip_address = $this->input->ip_address1();
// return $ip_address;
echo $this->input->ip_address();
if ( ! $this->input->valid_ip($ip))
{
echo 'Not Valid';
}
else
{
echo 'Valid';
}
$this->db->update('loginattempts',array( 'login_attempts' =>$this->session->userdata('login_attempts') , 'lastLogin' =>date('Y-m-d H:i:s'),'ip'=>$ip = $_SERVER['REMOTE_ADDR'] ),array('login_id' =>1) );
echo …Run Code Online (Sandbox Code Playgroud) 在CodeIgniter的文档中,它指出,
建议使用PHP 5.4或更高版本.
我在论坛等上查看并且无法在此找到明确的是/否,即使上面的句子暗示'是',我也不确定是否扩展到(现在是新的)PHP7.
我用PHP7尝试了一个简单的CI3示例,到目前为止,我所能报告的内容都非常好.
codeigniter ×10
php ×6
ajax ×2
json ×2
activerecord ×1
cookies ×1
database ×1
ip-address ×1
jquery ×1
mysql ×1
php-7 ×1
scalability ×1
scale ×1
session ×1
sql ×1