Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP下载脚本将下载次数增加两倍_Php_Codeigniter_Download - Fatal编程技术网

PHP下载脚本将下载次数增加两倍

PHP下载脚本将下载次数增加两倍,php,codeigniter,download,Php,Codeigniter,Download,我正在做一个项目,用户可以通过点击下载按钮下载文件。单击下载链接后,请求被重定向到实际下载代码所在的download.php文件。下载后,数据库中的下载次数增加1。PHP代码(用codeigniter编写)如下 public function index($filename) { $item = array_shift($this->music_m->get_by(array('upload_path'=>$filename))); if

我正在做一个项目,用户可以通过点击下载按钮下载文件。单击下载链接后,请求被重定向到实际下载代码所在的
download.php
文件。下载后,数据库中的下载次数增加1。PHP代码(用
codeigniter
编写)如下

public function index($filename)
    {
        $item = array_shift($this->music_m->get_by(array('upload_path'=>$filename)));
        if(count($item)){
            if (file_exists("uploads/".$filename)) {
                $item->noOfDownloads = $item->noOfDownloads + 1;
                $this->music_m->save($item, $item->id);
                $data = file_get_contents("uploads/".$filename); // Read the file's contents
                $name = $filename;
                force_download($name, $data);
            }else{
                echo "404 File Not Found";
                exit;
            }
        }else{
            echo "404 File Not Found!";
        }
    }

但我的问题是,下载的数量增加了2、3甚至6(使用IDM),而不是1。在使用Firefox浏览器的Linux中,它可以正常工作。但在windows中,在谷歌浏览器中,它增加了2。当IDM下载文件时,情况变得最糟,它会将下载次数增加6。我不知道哪里可能出错。脚本本身是被多次调用还是其他调用

这是因为有多个请求,IDM使用多个连接来下载文件。保留一个会话变量标志以查看tht会话的下载计数是否增加。增加计数器开关标志值时。