Я новичок в PHP поэтому, пожалуйста, простите меня, если у меня есть глупые ошибки или мое объяснение не понятно ...Delay процесс PHP до предыдущего процесс не был завершен
творю локальный сайт, который управляет несколько файлов и папок. Интерфейс использует Codemines jQuery Form Wizard, который отправляет входные значения в файл process.php, который проходит через ряд операторов «if» на основе выбранных входных значений.
У меня есть форма, правильно отправляющая входные значения с использованием $_SESSION['siteurl'] = $_POST['siteurl'];
, и первый процесс отлично работает, который копирует все содержимое папки из одного места назначения в другой (23 Мб содержимого) ... Следующий процесс должен скопируйте другую папку в папку, скопированную на последнем шаге, но это, похоже, не происходит, потому что предыдущий процесс копирования все еще выполняется из-за количества копируемых файлов.
Итак, мой вопрос: как создать паузу между первым процессом копирования и вторым (второй процесс копирования доступен только после завершения первого)?
Я пробовал использовать sleep(4000);
и usleep(4000);
без везения, но я просто поставил этот код между двумя процессами (не уверен, что это правильно).
Вот PHP код, который я использую как часть моего файла process.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, я понимаю, что копирование папки и такие не является хорошей идеей для большинства веб-приложений с общественностью. Это просто инструмент управления для меня, чтобы я работал лично.
PS: Операторы if()
все работают нормально, я только вставлял их в сегмент кода, но проблема определенно связана с тем, как происходит копирование первой папки для обработки.
Большое спасибо всем, кто уделяет время, чтобы посмотреть на это для меня.
php не делает parrallelization ... какие части конкретно перекрываются? – Kristian
PHP работают параллельно в общем случае, но если вы используете сеанс, запрос блокируется, когда скрипт переходит к 'session_start()' - сеанс будет запущен только в том случае, если остальные запросы на тот же сеанс завершатся. – Sven