отображение процентного хода выполнения file_put_contents() для просмотра Codeigniter

#php #codeigniter

Вопрос:

В настоящее время я работаю над сайтом для загрузки. Вот моя функция для сохранения имени изображения в базе данных и загрузки его на сервер из данных base64.

 public function addImages($order_last_id, $cropped)
  {
    // this is for saving the base64 image to database
    $order = $this->Order_model->get($order_last_id);
    // if(!$data){
    //   return false;
    // }

    //$images = [];
    $cropped_image = [];

    $date = new DateTime();
    $startdata = $date->format('YmdHis');
    $newName = str_replace('/', '', $startdata);
    $image_name =  $newName;
    $i = $this->db->insert_id();
      foreach ($cropped['cropped_images'] as $keys => $output){
        // $cropped_image[] = $output;
         $res[] = ['cropped_images' => $image_name.$i.".jpg", 
                  'order_id' => $order_last_id];
                  $i  ;
      }

      // foreach ($data['name'] as $key => $image){
      //   $images[] = $image;
      // }

    // this is for uploading the base64 image to files
    $date = new DateTime();
    $startdata = $date->format('YmdHis');
    $newName = str_replace('/', '', $startdata);

      $image = [];
      $image_name =  $newName;
        $i = $this->db->insert_id();
        foreach ($cropped['cropped_images'] as $key => $value) {
        $image[] = $value;
        file_put_contents(
            "uploads/orders/".$image_name.$i.".jpg",
            base64_decode(
                str_replace('[removed]', '', $value)
            )
        );
        $i  ;
      }

    return $this->db->insert_batch('orderimages', $res);
  }
 

теперь то, что я хочу сделать, это отобразить прогресс file_put_contents() в моем представлении. как я могу этого достичь?

любая помощь будет признательна.

PS: Я не могу найти ничего об этом вопросе в сети, поэтому я надеюсь, что кто-нибудь сможет мне помочь

Комментарии:

1. Хранение файла file_put_contents() должно быть более или менее мгновенным. При загрузке требуется время для загрузки (http-запрос), так как для этого необходимо отправить полное содержимое файла с клиента на сервер. Самым простым способом было бы использовать для этого JavaScript (ajax), для которого существует множество руководств/руководств.

2. спасибо за ответ, но я использую содержимое файла для сохранения изображений с высоким разрешением (2 МБ и выше), поэтому я думаю, что загрузка изображений также займет больше времени

3. Нет, это быстро (если только у вас нет каких-либо проблем с чрезвычайно медленной файловой системой, но в этом случае лучше разобраться). Время загрузки (http-запрос) будет на порядок медленнее, так что это то, что вы должны показать в своем представлении.

4. цель этого в том, что мой контент занял слишком много времени для перенаправления после завершения. поэтому я хочу, чтобы пользователи знали, сколько их изображений загружается, чтобы избежать перезагрузки страницы.

5. а ну понятно. может быть, мне следует начать просматривать свои коды, чтобы узнать фактический источник задержки. спасибо за ответ!