imediasun
2.09.2013 - 14:45
Здравствуйте есть
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
2.09.2013 - 14:51
я бы в обработчике 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
2.09.2013 - 15:00
Проблема в том что время ожидания сервера мало для выполнения такого кода там может быть 3000 фоток и каждая ресайзица и создается миниатюра, сервер дает ошибку. Если знаете как сделать приведите пример пожалуйста чтобы наглядно было
imediasun
2.09.2013 - 15:02
Вот код но он, еще раз повторяю виснет, и еще хотелось бы чтобы отображался процесс загрузки каждого файла а в аяксе можно прелоудер вставить
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);
$dir = "size_photo";
$files = scandir($dir);
$site = ftp_nlist($conn_id,"");
foreach ($site as $file){
if(!in_array($file,$files)){
$server_file=$file;
$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['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 );
}
}