[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ajax запрос в цикле
imediasun
Здравствуйте есть php страница

foreach ($site as $file){
echo "<input type='text' value='".$file."'";
}

Она выводит названия файлов находящихся в определенной директории в инпут.
Есть ajax запрос, который выполняет php код и возвращает результат выполнения.
	function put_img(obj){

$.ajax({
url: "/dir2/index",
type: "POST",
cache:true,
data: {data:obj},
success: function(data){

$(".result").html(data);

}
}
);
}

В файле dir2/index происходит ресайз изображения.
Как этот аякс запрос вызвать в цикле для каждого инпута, так чтобы каждый последующий аякс запрос происходил только по успешному завершению предыдущего? Дело в том что время ожидания сервака ограничено и это правильно и я подумал может от клиента выполнять пхп срипт через аякс запрос для каждого нового файла, помогите пожалуйста
Игорь_Vasinsky
я бы в обработчике php сделал этот цикл с обработкой картинок и для каждой картинки возвращал результат в нужное место.

и этот момент
Цитата
запрос происходил только по успешному завершению предыдущего


там же контролировал, а на клиент только результат слал.



_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
imediasun
Проблема в том что время ожидания сервера мало для выполнения такого кода там может быть 3000 фоток и каждая ресайзица и создается миниатюра, сервер дает ошибку. Если знаете как сделать приведите пример пожалуйста чтобы наглядно было
imediasun
Вот код но он, еще раз повторяю виснет, и еще хотелось бы чтобы отображался процесс загрузки каждого файла а в аяксе можно прелоудер вставить

public function index()
{
ini_set('display_errors', 1);
error_reporting(E_ALL);
// установка соединения
$ip='83.142.107.111';
$port='3377';
$timeout='9000';
$ftp_user_name='imediasun';
$ftp_user_pass='sunimedia';
$conn_id = ftp_connect($ip,$port,$timeout);
// проверка имени пользователя и пароля
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// получение списка файлов директори /
/* $buff = ftp_rawlist($conn_id, '/'); */
// закрытие соединения


// вывод буфера

$dir = "size_photo";
$files = scandir($dir);
$site = ftp_nlist($conn_id,"");
foreach ($site as $file){
if(!in_array($file,$files)){
$server_file=$file;
//если нет такого файла в папке size_photo записать его и thumbs изменив размер
$local_file='size_photo_tmp/'.$file.'';
$this->load->view('dirread_message');
if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) {
echo "Произведена запись в $local_file\n";
}
else {
echo "Не удалось завершить операцию\n";
}
$this->dir2($file);
}

}



ftp_close($conn_id);
}
public function dir2($file){

$upload_data['full_path']= $_SERVER['DOCUMENT_ROOT'] .'/size_photo_tmp/'.$file.'';
$config['allowed_types'] = 'jpg|jpeg|gif|png';
$config['image_library'] = 'gd2'; // указываем библиотеку для обработки изображения
$config['source_image'] = $upload_data['full_path']; // указываем полный путь к загруженному изображению, которое будем уменьшать
$config['new_image']= APPPATH.'../size_photo_img/'; // указываем куда сохранять фотографию
$config['maintain_ratio'] = TRUE; // сохранение пропорций */
/* $config['create_thumb'] = TRUE; */

$config['width'] = 2464; // ширина миниатюры
$config['height'] = 1632; // высота миниатюры
$this->image_lib->initialize($config);
$this->load->library('image_lib', $config); // загружаем библиотеку с настройками
$this->image_lib->resize(); // вызываем функцию уменьшения изображения
if ( ! $this->image_lib->resize())
{
echo $this->image_lib->display_errors();
}
else{
$data['print']="файл переписан";

$this->load->view('dirread_message' ,$data );


}

}

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.