php的CI框架如何实现异步调用?

如题。php的CI框架如何实现异步调用?在一个方法里调用另一个控制器或模型的方法,还能继续往下执行。

我觉得楼主的程序架构可能存在有一定的问题。
在mvc中,c这一层并不提倡被复用。m这一层并不做逻辑判断的事情。这样一来,楼主想在不同controller里使用相同的逻辑判断,比如登陆。这时你可以采用ci里的library来做……至少我认为这样挺不错的!

如果你曾经在某个框架里看到不同controller相互调用,你可以认为那是一种弱设计,我本人并不提倡这样做。至少目前你说的登陆逻辑,可以抽象出一个login_library.php来处理。

还有,如果你每个控制器都会用到的方法,你可以考虑把这些方法放到一个基类里面去 比如ci的 MY_Controller 扩展基类追问

有实例吗?library是什么?怎么来用?

追答

没写实例 ,建议多看看官方手册

http://codeigniter.org.cn/user_guide/general/creating_libraries.html

追问

CI框架我刚用。在视图里,选择时间,点击发送,用Ajax处理到控制层的一个方法。这个方法里我调用另一个控制器里的方法进行异步执行,这样不影响第一个控制层的继续向下执行。
我用fsockopen这个方法做,CI是可以这样写的:xxx/index.php/push
用fputs进行传参。push是控制层里一个类,继承CI_Controller。却无法在push里输出。。。
这个问题困扰我好多天!帮帮忙吧!

追答

额………… 不是很明白你说的

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-09
在你自定义的类库中初始化CodeIgniter资源

要你自定义的类库中访问CodeIgniter的原始资源,你必须使用 get_instance() 函数.这个函数返回一个CodeIgniter super object.

一般来说在你的控制器函数中你可以通过 $this 调用任何可用的CodeIgniter函数:
$this->load->helper('url');
$this->load->library('session');
$this->config->item('base_url');
//etc.
$this, 只直接作用在你自己的控制器,模型和视图中.当你在自定义类中想使用CodeIgniter原始类时,你可以这样做:

首先,定义CodeIgniter对象赋给一个变量:
$CI =& get_instance();
一旦定义某个对象为一个变量,你就可以使用那个变量名 取代 $this:
$CI =& get_instance();

$CI->load->helper('url');
$CI->load->library('session');
$CI->config->item('base_url');
//etc.
注意: 你将注意到get_instance()这个函数通过被引用的方式被传递:

$CI =& get_instance();

这十分重要. 通过引用的方式赋给变量将使用原始的 CodeIgniter 对象,而不是创建一个副本。

//------------------------------------------------------------------------------------------------//
我想这也许是你需要的.$CI =& get_instance();之后再用$CI->load->library('session');等方法加载你需要的追问

你大概理解错了我需要的东西。在第一个控制器的一个方法里,传递参数,去调用第二个控制器里的方法。同时不影响第一个控制器这个方法的向下执行。这个要怎么做呢?

相似回答