Timeout server mysql

di il
6 risposte

Timeout server mysql

Ho un piccolo server Centos7 con 500M RAM 1.8 GHz e ad un certo punto devo scaricare un csv e inserirlo nel db con la seguente procedura:

function do_import($id_import,$filename){
                if ( isset($_SERVER['REMOTE_ADDR']) === false ) $_SERVER['REMOTE_ADDR'] = '127.0.0.1';

                $contents = fopen('./uploads/'.$filename,"r");

                while (($row = fgetcsv($contents, 300000, ",")) !== FALSE) {
       
                        $data = array(
                                'id_import'                                         => $id_import,
                                'asset_id'                                            => $row[0],
                                'asset_channel_id'                              => $row[2],
                                'custom_id'                                        => $row[3],
                                'asset_title'                                        => $row[4],
                                'country'                                             => $row[5],
                                'total_views'                                       => $row[6],
                                'ad_enabled_views'                             => $row[11],
                                'ad_requested_views'                          => $row[8],
                                'watch_page_views'                             => $row[7],
                                'embedded_page_views'                      => $row[8],
                                'channel_page_video_views'                => $row[11],
                                'gross_youtube_sold_revenue'             => $row[15],
                                'gross_partner_sold_revenue'             => $row[13],
                                'gross_adsense_sold_revenue'            => $row[14],
                                'total_earnings'                                => $row[23],
                                'net_youtube_sold_revenue'              => $row[20],
                                'net_adsense_sold_revenue'              => $row[19]
                        );
                        
                                              $this->db->insert('yt_reports', $data);

                }
                        $query = 'UPDATE yt_imports SET processed = 1 WHERE id = '.$id_import;
                        $this->db->query($query);

        }
Il problema è che mi da il seguente errore:

Error Number: 2013
Lost connection to MySQL server during query


Sarà una settimana che cerco una soluzione su google, cambiando varie variabili e altro.
Vorrei sapere se avete qualche consiglio o mi tocca aumentare cpu o ram del server?

Il csv è di soli 30Mb, più piccoli di questa dimensione non danno problemi.

Grazie mille in anticipo

6 Risposte

  • Re: Timeout server mysql

    Suddividilo in due csv più piccoli
  • Re: Timeout server mysql

    Non posso è l'utente che lo inserisce. In locale mi funziona alla perfezione -.-
  • Re: Timeout server mysql

    L'utente lo inserisce e avvia l'import o puoi fare qualcosa tu prima?
  • Re: Timeout server mysql

    Ho notato che restano liberi quando avviene il crash, 5 Mb di RAM e potrebbe essere che non ha più memoria da allocare.
    L'utente inserisce il csv in un semplice form, il submit interroga un controller e il metodo importa del model.
    Non riesco a trovare una strategia per suddividere il csv in due parti.
  • Re: Timeout server mysql

    Ovviamente la strada corretta è aggiungere Ram.

    In ogni vaso, il csv è un file di testo, è semplice dividerlo in più file.
  • Re: Timeout server mysql

    Ho risolto finalmente settando questi valori a runtime:
    
      		$sq = "SET GLOBAL wait_timeout = 28800";
                    $this->db->query($sq);
                    $sq = "SET GLOBAL connect_timeout = 28800";
                    $this->db->query($sq);
                    $sq = "SET GLOBAL interactive_timeout = 28800";
                    $this->db->query($sq);
    
    Adesso importa anche csv da 200M.
Devi accedere o registrarti per scrivere nel forum
6 risposte