나는 나는 ... 나는 바보 같은 실수를하거나 내 설명이 명확하지 않은 경우 그래서 용서해주십시오 PHP 새로운지연 이전 프로세스가 완료 될 때까지 PHP 프로세스
나는를 제어하는 로컬 사이트를 만드는 중이라서 파일 및 폴더가 거의 없습니다. 인터페이스는 Codemines jQuery Form Wizard를 사용하여 선택된 입력 값을 기반으로 일련의 'if'문을 통해 실행되는 process.php 파일에 입력 값을 보냅니다.
$_SESSION['siteurl'] = $_POST['siteurl'];
을 사용하여 입력 값을 올바르게 보내고 첫 번째 프로세스가 폴더의 전체 내용을 한 대상에서 다른 대상 (23MB 용량)으로 복사하는 데 적합합니다 ... 다음 프로세스는 다음과 같습니다. 마지막 단계에서 복사 한 폴더에 다른 폴더를 복사하지만 복사되는 파일의 양 때문에 이전 복사 프로세스가 진행 중이므로 이런 일이 발생하지 않는 것 같습니다.
제 질문은 첫 번째 복사 프로세스와 두 번째 복사 작업 사이에 일시 중지를 만들 수있는 방법입니다. 첫 번째 복사 프로세스는 첫 번째 복사 프로세스 만 완료된 후에 만 사용할 수 있습니까?
나는 행운을 가지고 sleep(4000);
과 usleep(4000);
을 사용해 보았습니다.하지만이 코드를 두 프로세스 사이에 넣었습니다 (올바른지 확실하지 않음).
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);
}
나는이 말이 희망, 그렇지 않은 경우 주저하지 말아 주시기 바랍니다 : 여기에
내가 내 process.php 파일의 한 부분으로 사용하고있는 PHP 코드입니다.주의 사항 :
이 로컬 MAMP 서버에 혼자 나를 위해 몇 가지 기본적인 폴더 작업을 관리하는 페이지입니다, 나는 복사 폴더와 같은 대부분의 공공 웹 애플리케이션을위한 좋은 생각이 아니라는 것을 알고 있습니다. 이것은 개인적으로 운영되는 관리 도구 일뿐입니다.
추신 : if()
문 모두 잘 작동하지만 코드 세그먼트에 붙여 넣었지만 첫 번째 폴더를 복사하는 과정과 관련이 있습니다.
저를보기 위해 시간을 할애 해 주셔서 감사합니다.
PHP는 parrallelization을하지 않습니다 ... 어떤 부분이 겹치는 부분입니까? – Kristian
PHP는 일반적인 경우에 병렬로 작동하지만 세션을 사용하는 경우 스크립트가'session_start()'에 도달하면 요청이 잠겨 - 같은 세션에 대한 다른 요청이 끝난 경우에만 세션이 시작됩니다. – Sven