Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.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
Javascript Jquery和Swfupload导致整个网站速度急剧下降_Javascript_Php_Jquery_Web_Swfupload - Fatal编程技术网

Javascript Jquery和Swfupload导致整个网站速度急剧下降

Javascript Jquery和Swfupload导致整个网站速度急剧下降,javascript,php,jquery,web,swfupload,Javascript,Php,Jquery,Web,Swfupload,我在一个网站上工作了一段时间,最近遇到了一个我似乎无法解决的问题。我是一个相对较新的网络开发人员,因此非常感谢您的帮助 我使用swfupload处理上传到我网站的音频。我知道swfupload能够通过一个队列同时处理多个文件上传。然而,当我把一长串音频文件排成一列时,每个文件的上传速度都会越来越慢……下面给出了处理上传的php代码。即使代码引用了很多其他的帮助函数,我也会尽力解释我要做的事情 基本上,除了用户授权检查等所有的琐事,代码创建了一个临时的“跟踪”,它存储在我的数据库中。曲目存储在某个

我在一个网站上工作了一段时间,最近遇到了一个我似乎无法解决的问题。我是一个相对较新的网络开发人员,因此非常感谢您的帮助

我使用swfupload处理上传到我网站的音频。我知道swfupload能够通过一个队列同时处理多个文件上传。然而,当我把一长串音频文件排成一列时,每个文件的上传速度都会越来越慢……下面给出了处理上传的php代码。即使代码引用了很多其他的帮助函数,我也会尽力解释我要做的事情

基本上,除了用户授权检查等所有的琐事,代码创建了一个临时的“跟踪”,它存储在我的数据库中。曲目存储在某个相册下(我将相册称为发行版),一旦在该相册下创建了临时曲目,我就可以在该数据库条目下上载音频文件。我使用getID3解析媒体文件,然后通过从音频中提取的任何内容更新数据库中的曲目信息

这段代码运行良好,但如果我选择超过(排队)15个曲目上传,第15个曲目后的曲目会变慢,到第50个曲目时…上传一个文件将需要10分钟以上。我知道可能有很多问题导致了这一点,但我只是想知道是否有人对这一问题可能在哪里有所暗示

非常感谢

 <?php

   private function saveBatchAudio($artist) {

    Utils::checkFileUpload();
    if ($this->isEditable($artist['artist_id'])) {
        require_once "Db/DbTracks.php";
        require_once "Db/DbReleases.php";

        $trackList = DbTracks::getTracksByReleaseHash($_POST['ReleaseHash'], 0, 100);
        $trackListOrder = count($trackList);

        $row = array(
            'track_name' => Utils::escape($_POST['Name']),
            'artist_id' => $artist['artist_id'],
            'release_hash' => Utils::escape($_POST['ReleaseHash']),
            'track_order' => $trackListOrder+1,
            'user_id' => $_SESSION['user']['user_id'],
            'track_upload_user_ip' => Utils::getIpAddress()
        );

                    $id = DbTracks::newTrack($row);
                    $this->log($artist, "User [{$_SESSION['user']['user_name']}] has created track:" . var_export($row, true));
    }
            else {
        echo json_encode(array(
            'message' => Utils::getMessage('e001')
        ));
    }


        require_once "Db/DbTracks.php";
        $track = DbTracks::getTrackById($id);

        if (!empty($track)) {
            $f = __FFM_ARCHIVE__ . $track['release_hash'] . '/' . $track['track_filename'];
            if (!empty($track['track_filename']) && file_exists($f)) {
                unlink($f);
            }


            include_once "formatting.php";
            $filename = wp_unique_filename(__FFM_ARCHIVE__ . $track['release_hash'], $_FILES['Filedata']['name']);

            $path = __FFM_ARCHIVE__ . $track['release_hash'] . '/' . $filename;
            if (!is_dir(dirname($path))) {
                wp_mkdir_p(dirname($path));
            }
            move_uploaded_file($_FILES["Filedata"]["tmp_name"], $path);

            require_once(dirname(__FILE__) . '/../../getid3/getid3.php');
            $getID3 = new getID3;
            $getID3->setOption(array('encoding' => 'UTF-8'));
            $info = $getID3->analyze($path);
            getid3_lib::CopyTagsToComments($info);
            $data = array(

                'track_name' => isset($info['tags']['id3v2']['title']['0']) ? $info['tags']['id3v2']['title']['0']  : $filename,
                'track_label' => isset($info['tags']['id3v2']['album']['0']) ? $info['tags']['id3v2']['album']['0']  : Utils::escape($_POST['Label']),
                'track_year' => isset($info['tags']['id3v2']['year']['0']) ? $info['tags']['id3v2']['year']['0']  : Utils::escape($_POST['Year']),
                'track_filename' => $filename,
                'track_size' => filesize($path),
                'track_length' => isset($info['playtime_seconds']) ? $info['playtime_seconds'] : 0,
                'track_bitrate' => isset($info['audio']['bitrate']) ? $info['audio']['bitrate'] : 0,
            );
            DbTracks::updateTrackById($track['track_id'], $data);

            $this->zipFolder(__FFM_ARCHIVE__ . $track['release_hash'], $track['release_hash']);

            $this->log($artist, "User [{$_SESSION['user']['user_name']}] has uploaded track");

            echo json_encode(array(
                'mp3' => $mp3 = __FFM_ARCHIVE_FRONT__ . $track['release_hash'] . '/' . $filename
            ));
        } else {
            echo json_encode(array(
                'message' => Utils::getMessage('e002')
            ));
        }

    }

我想知道上传是如何完成的。这是一个持久连接吗?如果是这样,可能是内存泄漏导致性能下降。有日志吗?是否产生了任何可能有助于解释发生了什么的错误?@Twisty我有一个日志,用于记录何时创建曲目数据库条目,何时将音频文件保存到服务器上,以及何时使用音频文件中的信息更新数据库条目。日志显示预期性能:创建新曲目->上传新音频->创建新曲目->上传新音频->创建…等等。但是,如果我将大量文件排队,我会遇到随机情况,即创建新曲目->创建新曲目->上传音频->创建新曲目->上传音频->上传音频->上传audio@Twisty我想可能是因为我要打很多数据库电话?我假设swfupload在多个文件上传中使用某种循环,并且我在每个循环中都进行多个数据库调用……这可能是一个原因吗?这可能会带来一个问题。你能先处理上传,然后再返回并添加上传文件的数据吗?@Twisty我可以,但这意味着要更改大量代码…我花了一整天的时间试图用更少的数据库调用来完成,但我仍在尝试找出swfupload文档…无论如何,感谢您的输入!