如何提高codeigniter的性能

时间:2017-09-20 12:08:34

标签: php codeigniter debugging

我有一个用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>

你能帮我找到这种低性能的原因吗?

2 个答案:

答案 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;
    }

}