我是PHP新手所以请原谅我,如果我犯了愚蠢的错误,或者我的解释不明确......
我正在制作一个控制一些文件和文件夹的本地网站。该接口使用Codemines jQuery Form Wizard,它将输入值发送到我的process.php文件,该文件根据所选的输入值运行一系列“if”语句。
我的表单使用$_SESSION['siteurl'] = $_POST['siteurl'];
正确发送输入值,第一个进程正常工作,即将文件夹的全部内容从一个目标复制到另一个目标(23mb内容)...下一个进程应该将另一个文件夹复制到最后一步复制的文件夹中,但这似乎不会发生,因为由于复制的文件数量,以前的复制过程仍在进行中。
所以我的问题是,如何在第一个复制过程和第二个复制过程之间创建暂停(第二个复制过程仅在第一个复制过程完成后才可用)?
我尝试过使用sleep(4000);
和usleep(4000);
没有运气,但我只是将代码放在两个进程之间(不确定这是否正确)。
以下是我作为process.php文件的一部分使用的PHP代码:
if($_SESSION['cmsbranding'] == 'withbranding'){
mkdir("/user/foldername/foldername/$_SESSION[foldername]/", 0700);
function recurse_copy($src,$dst) {
$dir = opendir($src);
@mkdir($dst);
while(false !== ( $file = readdir($dir)) ) {
if (( $file != '.' ) && ( $file != '..' )) {
if ( is_dir($src . '/' . $file) ) {
recurse_copy($src . '/' . $file,$dst . '/' . $file);
}
else {
copy($src . '/' . $file,$dst . '/' . $file);
}
}
}
closedir($dir);
}
// Source directory (can be an FTP address)
$src = "/copythisfolder/";
// Full path to the destination directory
$dst = "/user/foldername/foldername/$_SESSION[foldername]/";
set_time_limit(0);
recurse_copy($src,$dst);
mkdir("/user/foldername/foldername/$_SESSION[foldername]/placesecondfolderinhere/", 0700);
function recurse_copy($src,$dst) {
$dir = opendir($src);
@mkdir($dst);
while(false !== ( $file = readdir($dir)) ) {
if (( $file != '.' ) && ( $file != '..' )) {
if ( is_dir($src . '/' . $file) ) {
recurse_copy($src . '/' . $file,$dst . '/' . $file);
}
else {
copy($src . '/' . $file,$dst . '/' . $file);
}
}
}
closedir($dir);
}
sleep(4000);
// Source directory (can be an FTP address)
$src = "/copythisfolder-forsecondprocess/";
// Full path to the destination directory
$dst = "/user/foldername/foldername/$_SESSION[foldername]/placesecondfolderinhere/";
set_time_limit(0);
recurse_copy($src,$dst);
}
我希望这是有道理的,请不要犹豫,问它是不是。
请注意:
这是我在本地MAMP服务器上单独管理一些基本文件夹任务的页面,我知道复制文件夹等对于大多数公共Web应用程序来说并不是一个好主意。这只是我个人管理的管理工具。
PS:if()
语句都运行正常,我只粘贴在一段代码中,但问题肯定与复制第一个文件夹的过程有关。
非常感谢任何花时间为我看这个的人。
答案 0 :(得分:0)
您在代码中定义了两次函数recurse_copy。我甚至惊讶它甚至跑了。
另外,根据名称,recurse_copy是递归的。这会对时间产生影响吗?你不会在函数对自身的递归调用之间休眠。