实时服务器需要太多时间来获取结果

时间:2017-06-20 15:30:08

标签: php mysql codeigniter server vps

自上个月以来一直在努力,尝试了许多我从谷歌获得的解决方案,但没有得到任何帮助。代码在localhost上运行得非常快捷。但不是在实时服务器(VPS主机)上。请访问http://97.74.37.64/链接,查看在DND和NON-DND号码中过滤14000个手机号码需要永久保留。但是在我的本地主机上,完成相同的过程只需要大约20秒。我不明白原因,也没有时间浪费更多。请尽早提供您的解决方案。

PS:这个网站使用GoDaddy VPS托管4GB内存。

以下是代码..

Controller(filter.php)

<?php

defined('BASEPATH') OR exit('No direct script access allowed');

class Filter extends MX_Controller
{

    function __construct()
    {
        parent::__construct();
        $this->load->model('Filter_model');
    }

    public function index()
    {
        $this->load->view('front_page');
    }

    public function numbers()
    {
        set_time_limit(2500);
        ini_set('memory_limit', '-1');

        //empty the existing table data first
        $tru = $this->Filter_model->empty_data();

        if (isset($tru))
            $mobile_number = $this->input->post('numbers');

        //adding comma after each mobile number
        if (strpos($mobile_number, "\r\n") !== false) {
            $mobile_number = str_replace("\r\n", ',', $mobile_number);
        } elseif (strpos($mobile_number, "\n\r") !== false) {
            $mobile_number = str_replace("\n\r", ',', $mobile_number);
        } elseif (strpos($mobile_number, "\n") !== false) {
            $mobile_number = str_replace("\n", ',', $mobile_number);
        }

        //convert comman seprate string to the array
        $mobile_number = explode(",", $mobile_number);

        $json_data['number'] = json_encode($mobile_number);

        $j_conv = str_replace(']', '', str_replace('"', '', str_replace('[', '', $json_data['number'])));

        $e_arr = explode(",", $j_conv);

        $res = $this->Filter_model->compare_numbers($e_arr);
        $res_nondnd = $this->Filter_model->compare_nondnd_numbers($e_arr);

        $array = json_decode(json_encode($res), True);
        $array_nondnd = json_decode(json_encode($res_nondnd), True);

        //array common words to remove
        $common_words = array("e_number]", "=", "n", "0[");

        //now convert the data into string again
        $url = preg_replace('/[a-z]/', '', str_replace($common_words, '', preg_replace('/&.....[a-z_=]/', ',', urldecode(http_build_query($array)))));

        //working here
        if (sizeof($mobile_number) <= 15000){
            $data['dnd_numbers'] = $array;
            $data['not_dnd_numbers'] = $array_nondnd;
            $this->load->view('filtered_numbers', $data);
        } else {
            $this->session->set_flashdata('error', 'Error... Please enter max 15000 numbers at one time');
            redirect('filter');
        }

    }
}

模型(Filter_model.php)

<?php

class Filter_model extends CI_Model {

    function __construct() {
        parent::__construct();
    }

    public function empty_data(){
        return $this->db->truncate('srchlist');
    }
    public function compare_numbers($e_arr){
        $stmt = "('" . implode("'), ('", $e_arr) . "')";
        $ins_res = $this->db->query("INSERT INTO srchlist (number) VALUES $stmt" );
        $join_res = $this->db->query("SELECT mobile.phone_number FROM mobile INNER JOIN srchlist ON mobile.phone_number = srchlist.number");
        return $join_res->result();
    }
    public function compare_nondnd_numbers($e_arr){
        $join_nondnd_res = $this->db->query("SELECT number FROM `srchlist` F WHERE NOT EXISTS (SELECT phone_number FROM mobile S WHERE F.number = S.phone_number)
");
        return $join_nondnd_res->result();
    }
    public function check_dnd_number($phone_number) {
        $this->db->where('phone_number', $phone_number);
        $this->db->where('ops_type', 'A');
        //$this->db->or_where('ops_type', 'a');
        $query = $this->db->get('mobile');
        return $query->row('phone_number');
    }

    public function database_numbers() {
        $this->db->select('phone_number');
        $this->db->where('ops_type', 'A');
        $query = $this->db->get('mobile');
        return $query->result();
    }

    public function scrub_numbers() {
        $mobile_number = $this->input->post('numbers');
        if (strpos($mobile_number, "\r\n") !== false) {
            $mobile_number = str_replace("\r\n", ',', $mobile_number);
        } elseif (strpos($mobile_number, "\n\r") !== false) {
            $mobile_number = str_replace("\n\r", ',', $mobile_number);
        } elseif (strpos($mobile_number, "\n") !== false) {
            $mobile_number = str_replace("\n", ',', $mobile_number);
        }
        $pieces = explode(",", $mobile_number);
        if (!empty($pieces) && $pieces[0] != '')
            $pieces = array_map(function($v) {
                return strlen($v) >= 10 ? substr($v, -10) : $v;
            }, $pieces);
        $pieces = array_unique($pieces);
        $database = $this->database_numbers();
    }

}

查看(front_page.php)

<!DOCTYPE html>
<html lang="en">
    <?php $general = $this->Common_model->get_home(); ?>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="description" content="<?= $general->metadescription ?>">
        <meta name="keyword" content="<?= $general->metadescription ?>">
        <meta name="author" content="Jay Chandra || www.shubhtech.in">
        <title><?= $general->title ?></title>
        <!-- Bootstrap Core CSS -->
        <link href="<?= base_url() ?>assets/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
        <!-- Custom Fonts -->
        <link href="<?= base_url() ?>assets/vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
        <link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
        <link href='https://fonts.googleapis.com/css?family=Merriweather:400,300,300italic,400italic,700,700italic,900,900italic' rel='stylesheet' type='text/css'>
        <!-- Plugin CSS -->
        <link href="<?= base_url() ?>assets/vendor/magnific-popup/magnific-popup.css" rel="stylesheet">

        <!-- Theme CSS -->
        <link href="<?= base_url() ?>assets/css/creative.min.css" rel="stylesheet">

        <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
        <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
        <!--[if lt IE 9]>
            <script src="<?= base_url() ?>assets/https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
            <script src="<?= base_url() ?>assets/https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
        <![endif]-->

    </head>

    <body id="page-top">

        <nav id="mainNav" class="navbar navbar-default navbar-fixed-top">
            <div class="container-fluid">
                <!-- Brand and toggle get grouped for better mobile display -->
                <div class="navbar-header">
                    <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
                        <span class="sr-only">Toggle navigation</span> Menu <i class="fa fa-bars"></i>
                    </button>
                    <a class="navbar-brand page-scroll" href="<?= base_url() ?>#page-top"><?= $general->sitename ?></a>
                </div>

                <!-- Collect the nav links, forms, and other content for toggling -->
                <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                    <ul class="nav navbar-nav navbar-right">
                        <li>
                            <a class="page-scroll" href="<?= base_url() ?>#contact">Contact</a>
                        </li>
                    </ul>
                </div>
                <!-- /.navbar-collapse -->
            </div>
            <!-- /.container-fluid -->
        </nav>

        <header>
            <div class="header-content">
                <div class="header-content-inner">
                    <marquee direction="left" behavior="scroll" scrollamount="5" scrolldelay="100" onMouseOver="stop()" onMouseOut="start()">
                        <p><?= $general->marquee ?></p>
                    </marquee>
                    <p>To filter, You can enter multiple number by one number per line or one number by comma e.g: 8877665544, 9876543210.</p>
                    <div class="row">
                        <div class="col-lg-8 col-lg-offset-2">
                            <form method="post" action="<?= base_url() ?>filter/numbers/#result">
                                <div class="form-group">
                                    <textarea name="numbers" class="form-control" rows="10" autofocus=""></textarea>
                                    <p>(You can filter 15,000 mobile numbers at one time)</p>
                                </div>
                                <div class="form-group">
                                    <input type="submit" class="btn btn-lg btn-success" value="SCRUB IT"/>
                                </div>
                            </form>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-lg-12">Space for Ad</div>
                    </div>
                </div>
            </div>
        </header>

        <section id="contact">
            <div class="container">
                <div class="row">
                    <div class="col-lg-8 col-lg-offset-2 text-center">
                        <h2 class="section-heading">Let's Get In Touch!</h2>
                        <hr class="primary">

                    </div>
                    <div class="col-lg-4 col-lg-offset-2 text-center">
                        <i class="fa fa-phone fa-3x sr-contact"></i>
                        <p><?= $general->contact ?></p>
                    </div>
                    <div class="col-lg-4 text-center">
                        <i class="fa fa-envelope-o fa-3x sr-contact"></i>
                        <p><?= $general->email ?></p>
                    </div>
                </div>
            </div>
        </section>

        <!-- jQuery -->
        <script src="<?= base_url() ?>assets/vendor/jquery/jquery.min.js"></script>

        <!-- Bootstrap Core JavaScript -->
        <script src="<?= base_url() ?>assets/vendor/bootstrap/js/bootstrap.min.js"></script>

        <!-- Plugin JavaScript -->
        <script src="<?= base_url() ?>assets/https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js"></script>
        <script src="<?= base_url() ?>assets/vendor/scrollreveal/scrollreveal.min.js"></script>
        <script src="<?= base_url() ?>assets/vendor/magnific-popup/jquery.magnific-popup.min.js"></script>

        <!-- Theme JavaScript -->
        <script src="<?= base_url() ?>assets/js/creative.min.js"></script>

    </body>

</html>

过滤器编号显示视图(filtered_numbers.php)

<!DOCTYPE html>
<html lang="en">
    <?php $general = $this->Common_model->get_home(); ?>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="description" content="<?= $general->metadescription ?>">
        <meta name="keyword" content="<?= $general->metadescription ?>">
        <meta name="author" content="Jay Chandra || www.shubhtech.in">
        <title><?= $general->title ?></title>
        <!-- Bootstrap Core CSS -->
        <link href="<?= base_url() ?>assets/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
        <!-- Custom Fonts -->
        <link href="<?= base_url() ?>assets/vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
        <link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
        <link href='https://fonts.googleapis.com/css?family=Merriweather:400,300,300italic,400italic,700,700italic,900,900italic' rel='stylesheet' type='text/css'>
        <!-- Plugin CSS -->
        <link href="<?= base_url() ?>assets/vendor/magnific-popup/magnific-popup.css" rel="stylesheet">

        <!-- Theme CSS -->
        <link href="<?= base_url() ?>assets/css/creative.min.css" rel="stylesheet">

        <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
        <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
        <!--[if lt IE 9]>
            <script src="<?= base_url() ?>assets/https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
            <script src="<?= base_url() ?>assets/https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
        <![endif]-->

    </head>

    <body id="page-top">

        <nav id="mainNav" class="navbar navbar-default navbar-fixed-top">
            <div class="container-fluid">
                <!-- Brand and toggle get grouped for better mobile display -->
                <div class="navbar-header">
                    <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
                        <span class="sr-only">Toggle navigation</span> Menu <i class="fa fa-bars"></i>
                    </button>
                    <a class="navbar-brand page-scroll" href="<?= base_url() ?>#page-top"><?= $general->sitename ?></a>
                </div>

                <!-- Collect the nav links, forms, and other content for toggling -->
                <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                    <ul class="nav navbar-nav navbar-right">
                        <li>
                            <a class="page-scroll" href="<?= base_url() ?>#contact">Contact</a>
                        </li>
                    </ul>
                </div>
                <!-- /.navbar-collapse -->
            </div>
            <!-- /.container-fluid -->
        </nav>

        <header>
            <div class="header-content">
                <div class="header-content-inner">

                    <marquee direction="left" behavior="scroll" scrollamount="5" scrolldelay="100" onMouseOver="stop()" onMouseOut="start()">
                        <p><?= $general->marquee ?></p>
                    </marquee>
                    <p>To filter, You can enter multiple number by one number per line or one number by comma e.g: 8877665544, 9876543210.</p>
                    <div class="row">
                        <div class="col-lg-8 col-lg-offset-2">
                            <form method="post" action="<?= base_url() ?>filter/numbers/#result">
                                <div class="form-group">
                                    <textarea name="numbers" class="form-control" rows="10" autofocus=""></textarea>
                                    <p>(You can filter 15,000 mobile numbers at one time)</p>
                                </div>
                                <div class="form-group">
                                    <input type="submit" class="btn btn-lg btn-success" value="SCRUB IT"/>
                                </div>
                            </form>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-lg-12">Space for Ad</div>
                    </div>
                </div>
            </div>
        </header>

        <section class="bg-primary" id="result">
            <div class="container">
                <div class="row">
                    <div class="col-lg-4 col-lg-offset-2 text-center">
                        <h2 class="section-heading">DND Numbers</h2>
                        <hr class="light">
                        <textarea class="form-control" rows="20"><?php
                            foreach ($dnd_numbers as $list) {
                                echo "$list[phone_number]\r\n";
                            }
                            ?></textarea>
                    </div>
                    <div class="col-lg-4 text-center">
                        <h2 class="section-heading">NON DND Numbers</h2>
                        <hr class="light">
                        <textarea class="form-control" rows="20"><?php
                            foreach ($not_dnd_numbers as $list) {
                                echo "$list[number]\r\n";
                            }
                            ?></textarea>
                    </div>
                </div>
            </div>
        </section>

        <section id="contact">
            <div class="container">
                <div class="row">
                    <div class="col-lg-8 col-lg-offset-2 text-center">
                        <h2 class="section-heading">Let's Get In Touch!</h2>
                        <hr class="primary">

                    </div>
                    <div class="col-lg-4 col-lg-offset-2 text-center">
                        <i class="fa fa-phone fa-3x sr-contact"></i>
                        <p><?= $general->contact ?></p>
                    </div>
                    <div class="col-lg-4 text-center">
                        <i class="fa fa-envelope-o fa-3x sr-contact"></i>
                        <p><?= $general->email ?></p>
                    </div>
                </div>
            </div>
        </section>

        <!-- jQuery -->
        <script src="<?= base_url() ?>assets/vendor/jquery/jquery.min.js"></script>

        <!-- Bootstrap Core JavaScript -->
        <script src="<?= base_url() ?>assets/vendor/bootstrap/js/bootstrap.min.js"></script>

        <!-- Plugin JavaScript -->
        <script src="<?= base_url() ?>assets/https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js"></script>
        <script src="<?= base_url() ?>assets/vendor/scrollreveal/scrollreveal.min.js"></script>
        <script src="<?= base_url() ?>assets/vendor/magnific-popup/jquery.magnific-popup.min.js"></script>

        <!-- Theme JavaScript -->
        <script src="<?= base_url() ?>assets/js/creative.min.js"></script>

    </body>

</html>

0 个答案:

没有答案