За последние 24 часа нас посетили 17414 программистов и 1719 роботов. Сейчас ищут 1455 программистов ...

Загрузка страницы

Тема в разделе "JavaScript и AJAX", создана пользователем VaneS, 30 сен 2014.

  1. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Re: Строку в массив

    Да это хрень
    Стандартная сериализация пхп круче
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Виндовый диалог копирования файлов хотя бы чем-то оперирует, делит объем на скорость. А тут - поди угадай, когда сервер изволит повернуться к тебе лицом.
     
  3. VaneS

    VaneS Активный пользователь

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    Да я все понимаю, но куда деваться, значения получаю вот так
    Код (PHP):
    1. $str = 'status|d:95;country|s:2:"RU";city|s:3:"MOW";zone|s:3:"ALL";date_in|s:10:"30.09.2014";date_out|s:10:"01.10.2014";rooms|s:1:"1";adults1|s:1:"1";d_in|s:8:"20140930";d_out|s:8:"20141001";';
    2. $arr = explode(';', $str);
    3. foreach ($arr as $key=>$val)
    4. {
    5.     $a = explode('|',$val);
    6.     if($a[0]=="status")
    7.     {
    8.         $b = explode(':',$a[1]);
    9.         $status = $b[count($b)-1];
    10.         break;
    11.     }
    12. }
    13. echo $status;
    Но проблема осталась в другом теперь, я думал что данные записываются сразу, а как оказалось видимо данные записываются после работы всего скрипта, так что у меня все ровно ничего не получилось)
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Re: Строку в массив

    С чем борешься?
     
  5. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    Ничего не знаю, у меня код нормально работает, возвращает правильный массив
    Код (PHP):
    1. (
    2.     [status] => 95
    3.     [country] => RU
    4.     [city] => MOW
    5.     [zone] => ALL
    6.     [date_in] => 30.09.2014
    7.     [date_out] => 01.10.2014
    8.     [rooms] => 1
    9.     [adults1] => 1
    10.     [d_in] => 20140930
    11.     [d_out] => 20141001
    12.     [] => 
    13. ) 
     
  6. VaneS

    VaneS Активный пользователь

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    Да разобрать массив у меня тоже получилось... проблема осталась в другом)
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Re: Строку в массив

    Тебе зачем вообще эти данные и откуда они берутся изначально?
     
  8. VaneS

    VaneS Активный пользователь

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    В общем смысл такой, пользователь заполняет форму, и относительно этих данных с формы формируется список товаров, список товаров равен количеству запросов. Вот от количества запросов будет зависеть время работы скрипта, то есть через API в среднем обработка одного запроса занимает от 1 до 3 секунд отсюда и время получается, как сервер обработает весь список, отдает результат клиенту, время отдачи клиенту очень маленькое, менее секунды.
     
  9. VaneS

    VaneS Активный пользователь

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    В общем рассказывал тут, расскажу еще раз. В общем пишу модуль для diafanCMS, там пользователь через форму отправляет данные на сервер. На сервере относительно этих данных формируется список товара, далее мне нужно информацию о товаре запросить через API, каждый товар запрашивается отдельно, то есть количество товара ровно количеству запросов через API на сторонний сервис. Так вот сторонний сервис через API возвращает мне информацию о товаре, время такого ответа в среднем 1-3 секунды. А только после того как мой скрипт обработал весь список товара и получил информацию о каждом из них, отдает результат в виде HTML пользователю.
    В итоге пользователь отправляет форму и просто видит как страница грузится...эта страница грузится где то минуты 3, нормальный пользователь подумав что "что то зависло" просто уйдет со странице, по этому я захотел сделать прогресс бар, который будет отслеживать процент выполнения того скрипта. Я в начале подумал что это можно как то реализовать средствами JS и поэтому создал ту тему.
    Потом подумал и решил это реализовать так:
    Я знаю сколько всего будет запросов, а каждый запрос выполняется в цикле. Получается процент выполнения можно было бы высчитать по обычной формуле (n/count)*100=x%
    Я решил в конце каждого круга цикла считать это значение и записывать в сессию, а в это время на той странице с формой, (пока новая страница не открылась, на старой все скрипты еще работают) при событии submit аяксом опрашивать какой нибудь скриптик в котором просто написанно
    Код (PHP):
    1. echo $_SESSION['status'];
    И тут у меня началось самое интересное, скрипт вместо процента почему то начал возвращать ошибку что нет такой переменной, хотя я ее записывал в том цикле. После долгих поисков ошибки, я обнаружил что diafanCMS хранит сессию в базе данных вот в таком виде:
    Код (Text):
    1. status|d:95;country|s:2:"RU";city|s:3:"MOW";zone|s:3:"ALL";date_in|s:10:"30.09.2014";date_out|s:10:"01.10.2014";rooms|s:1:"1";adults1|s:1:"1";d_in|s:8:"20140930";d_out|s:8:"20141001";
    Стандартные способы собрать эту строку в массив не помогли, я тогда написал свой скрипт, который из всей строки вытягивает эту переменную
    $_SESSION['status'],а главное ее значение, больше мне ничего не надо было... Все логически должно было заработать, но как оказалось что diafanCMS записывает сессию в базу,я так понимаю, после выполнения всего скрипта... то есть в начале у меня эта переменная ровна 0, а потом сразу 99... Вот в общем и полное описание моей проблемы, как это обойти, я пока не придумал)
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Re: Строку в массив

    Господи...
    параллельно ты не можешь это грузить?
    можно наверняка.

    предлагаю упереться на параллельность.
     
  11. VaneS

    VaneS Активный пользователь

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    Re: Строку в массив

    Я все сделал на много проще, кому будет интересно, могу написать! =)
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Re: Строку в массив

    никому не говори
     
  13. VaneS

    VaneS Активный пользователь

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    Re: Строку в массив

    Ха ха, хорошо!
     
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Re: Строку в массив

    печаль
     
  15. VaneS

    VaneS Активный пользователь

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    Re: Строку в массив

    Почему? Радоваться надо что есть люди которые пытаются что то реализовывать.
     
  16. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Так, а запросы ты шлешь последовательно? В каком виде они отправляются? Может можно их за одну итерацию отдать?
     
  17. VaneS

    VaneS Активный пользователь

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
  18. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Re: Строку в массив

    Ты сдался на полпути.
     
  19. Zuldek

    Zuldek Старожил

    С нами с:
    13 май 2014
    Сообщения:
    2.381
    Симпатии:
    344
    Адрес:
    Лондон, Тисовая улица, дом 4, чулан под лестницей
    Если последовательно, то все ещё проще, приняв за 100% все обработанные запросы и при обработке n-количества отдавать в свистелку-перделку "загрузил 10%, жди друг!".

    Если совсем серьёзно, то "честно" отследить и выставить остаточное время можно только для загрузки файлов через session.upload_progress.enabled
     
  20. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Можно запустить параллельно всё
     
  21. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    с помощью пхп?
     
  22. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    С помощью чудесного похапе и волшебного аякса.
     
  23. VaneS

    VaneS Активный пользователь

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    Хороший кстати вопрос)

    Добавлено спустя 37 секунд:
    В моем случае это бы не помогло
     
  24. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    почему?
     
  25. VaneS

    VaneS Активный пользователь

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    потому что на страницу, в которой идет работа с медленной API, происходит обычный переход, и эта страница запрашивается путем отправки на нее формы, без каких либо аяксов.