我有一个用Codeigniter编写的程序,退出时结果非常慢。
当我调试程序时,我意识到有一个持续10秒的步骤
会话:使用'files'驱动程序
初始化类
这是完整的调试
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="300dp"
android:background="@android:color/background_light"
android:layout_height="300dp">
<TextView
android:layout_width="match_parent"
android:text="Hello World!"
android:gravity="center"
android:layout_centerInParent="true"
android:layout_height="wrap_content"
/>
</RelativeLayout>
你能帮我找到这种低性能的原因吗?
答案 0 :(得分:0)
我认为“Session:Class使用'files'驱动程序初始化。”花时间。
文件驱动程序: 'files'驱动程序使用您的文件系统存储会话数据。
根据Codeigniter Session文档,您可以更改数据库或其他位置(如文件,redis,memcached)中的存储引擎会话。
public static String getDataFromServer(String url) {
BufferedReader inputStream = null;
URL dataUrl = null;
String data = null;
//handle url exception
try {
dataUrl = new URL(url);
try {
URLConnection dc = dataUrl.openConnection();
dc.setConnectTimeout(5000);
dc.setReadTimeout(5000);
try {
inputStream = new BufferedReader(new InputStreamReader(dc.getInputStream(), "UTF-8"));
} catch (UnsupportedEncodingException e) { System.out.println(e.getMessage());}
StringBuffer sb = new StringBuffer();
String line = "";
while ((line = inputStream.readLine())!=null)
sb.append(line + "\r\n");
data = sb.toString();
} catch (IOException e) { System.out.println(e.getMessage());
}
} catch (MalformedURLException e) { System.out.println(e.getMessage());}
return data;
}
此外,您可以设置绝对路径:
更具体地说,它不支持在session.save_path中使用的PHP的目录级别和模式格式,并且它具有为安全而硬编码的大多数选项。相反,$ config ['sess_save_path']仅支持绝对路径。
答案 1 :(得分:0)
我想我找到了问题的原因。
事实上,我的控制器每次加载都是一个相当繁重的类(registered_user
- 当我评论它时,程序变得更快 - )
public function __construct() {
parent::__construct();
$this->load->model('user_inscription');
$this->load->model('user_connexion');
$this->load->model('mouchard');
$this->load->model('synchronisation');
$this->load->helper('string');
$this->load->helper('form');
$this->load->helper('language');
$this->load->library('session');
//$this->load->library('registered_user');
$this->load->library('sendsms');
}
这是班级。它连接到oracle数据库。我不知道为什么需要这么多时间才能实现。
class Registered_user {
private $query;
private $connexion;
public function __construct($host, $port, $serviceName, $user, $passwd) {
$baseLink = '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(Host = ' . $host . ')(Port = ' . $port . '))) (CONNECT_DATA = (SERVICE_NAME = ' . $serviceName . ')))';
$this->connexion = oci_connect($user, $passwd, $baseLink);
}
public function getConnexion() {
return $this->connexion;
}
public function setQuery($query) {
/*set the query*/
}
public function getInfos() {
$stid = oci_parse($this->connexion, $this->query);
oci_execute($stid);
$row = oci_fetch_array($stid, OCI_ASSOC + OCI_RETURN_NULLS);
return $row;
}
}