Javascript Jquery和Swfupload导致整个网站速度急剧下降
我在一个网站上工作了一段时间,最近遇到了一个我似乎无法解决的问题。我是一个相对较新的网络开发人员,因此非常感谢您的帮助 我使用swfupload处理上传到我网站的音频。我知道swfupload能够通过一个队列同时处理多个文件上传。然而,当我把一长串音频文件排成一列时,每个文件的上传速度都会越来越慢……下面给出了处理上传的php代码。即使代码引用了很多其他的帮助函数,我也会尽力解释我要做的事情 基本上,除了用户授权检查等所有的琐事,代码创建了一个临时的“跟踪”,它存储在我的数据库中。曲目存储在某个相册下(我将相册称为发行版),一旦在该相册下创建了临时曲目,我就可以在该数据库条目下上载音频文件。我使用getID3解析媒体文件,然后通过从音频中提取的任何内容更新数据库中的曲目信息 这段代码运行良好,但如果我选择超过(排队)15个曲目上传,第15个曲目后的曲目会变慢,到第50个曲目时…上传一个文件将需要10分钟以上。我知道可能有很多问题导致了这一点,但我只是想知道是否有人对这一问题可能在哪里有所暗示 非常感谢Javascript Jquery和Swfupload导致整个网站速度急剧下降,javascript,php,jquery,web,swfupload,Javascript,Php,Jquery,Web,Swfupload,我在一个网站上工作了一段时间,最近遇到了一个我似乎无法解决的问题。我是一个相对较新的网络开发人员,因此非常感谢您的帮助 我使用swfupload处理上传到我网站的音频。我知道swfupload能够通过一个队列同时处理多个文件上传。然而,当我把一长串音频文件排成一列时,每个文件的上传速度都会越来越慢……下面给出了处理上传的php代码。即使代码引用了很多其他的帮助函数,我也会尽力解释我要做的事情 基本上,除了用户授权检查等所有的琐事,代码创建了一个临时的“跟踪”,它存储在我的数据库中。曲目存储在某个
<?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文档…无论如何,感谢您的输入!