Maison > cadre php > PensezPHP > le corps du texte

Vous apprendre étape par étape comment utiliser ThinkPHP+phpExcel pour importer et exporter des données Excel (Pratique)

青灯夜游
Libérer: 2022-03-09 11:22:12
avant
7126 Les gens l'ont consulté

Comment importer un tableau Excel avec des images en PHP ? Comment exporter des images vers Excel ? Comment définir des styles pour Excel exporté pour le rendre plus beau ? L'article suivant vous aidera à les résoudre un par un. J'espère qu'il vous sera utile !

Vous apprendre étape par étape comment utiliser ThinkPHP+phpExcel pour importer et exporter des données Excel (Pratique)

Excel est un outil couramment utilisé pour la collecte de données et les statistiques. Habituellement, dans certaines plateformes d'information, afin de mieux parvenir à la dématérialisation ou de passer au cloud, les données de bureau doivent être migrées de l'ordinateur de bureau vers la plateforme. Or, le téléchargement des données sur la plateforme pour une utilisation par des non-développeurs impliquera inévitablement l'importation et l'exportation de données, et le format des données doit être Excel.

Cet article combinera les besoins réels de développement et résumera l'importation et l'exportation d'Excel pendant le processus de développement. Le framework de développement impliqué :

. lors du déploiement, pour les données comportant de nombreuses images dans Excel, il est nécessaire d'allonger le délai d'attente ou le temps d'exécution et d'augmenter la limite de taille de téléchargement

Entrepôt de codes : https://github.com/QuintionTang/crayon-thinkphp

Import

Importation de données, avant de commencer, vous devez définir le format des données importées et vous devez suivre strictement le programme de format prescrit pour analyser correctement les données. L'importation de données habituelle consiste simplement en des données en texte brut. Cet article importera des données avec des images dans Excel pour couvrir autant que possible les besoins d'importation.

Modèle

Le modèle est la base de l'importation de données. Un modèle de données simple est défini ci-dessous, avec le format suivant :

Vous apprendre étape par étape comment utiliser ThinkPHP+phpExcel pour importer et exporter des données Excel (Pratique)

Avec du texte et des images, le premier choix pour importer des données est de lire un fichier Excel, donc le fichier doit également être impliqué Téléchargez. Une fois le fichier téléchargé avec succès, détectez d'abord la colonne d'image et regardez directement le code :

    public function excel_import(){
            $usedfor = empty($_GET['usedfor']) ? 'picture' : trim($_GET['usedfor']);
            $used_for = $usedfor;
            import('ORG.Net.UploadFile');
            $upload = $this->_upload_init(new \Org\Net\UploadFile(),$usedfor);// 实例化上传类
            $attach = array();
            $attachment = array();
            $attach["success"] = 0;
            $info = "";
            if(!$upload->upload()) { // 上传错误提示错误信息
                $upload_error = $upload->getErrorMsg();
                $attach["msg"] = $upload_error;
            }else{ // 上传成功 获取上传文件信息
                $info =  $upload->getUploadFileInfo();
            }
            // 上传成功后开始处理
            if(is_array($info)){
                $info = $info[0];
                // PHPExcel 类引入
                import("Org.Util.PHPExcel");
                import("Org.Util.PHPExcel.Reader.Excel5");
                import("Org.Util.PHPExcel.Reader.Excel2007");
                
                import("Org.Util.PHPExcel.IOFactory.php");

                $filePath = $info["savepath"] . $info["savename"];
                $input_file_type = \PHPExcel_IOFactory::identify($filePath);

                // 开始读取Excel数据
                $objExcel = new \PHPExcel();

                $objReader = \PHPExcel_IOFactory::createReader($input_file_type);
                // 加载Excel文件
                $objPHPExcel = $objReader->load($filePath); 
                $objWorksheet = $objPHPExcel->getActiveSheet();
                $data = $objWorksheet->toArray();
                $attach_path = C('attach_path');
                $subpath = date('YmdHm', time());
                // Excel图片存储路径
                $imageFileRealPath = $attach_path . "excel_img/".$subpath ."/" ; 
                mkdirs($imageFileRealPath);
                $i = 0;
                $rebarRows = array();
                // 下面开始处理图片
                foreach ($objWorksheet->getDrawingCollection() as $img) {
                    list($startColumn, $startRow) = \PHPExcel_Cell::coordinateFromString($img->getCoordinates()); //获取图片所在行和列
                    $imageFileName = uniqid();
                    try {
                        switch($img->getExtension()) {
                            case 'jpg':
                            case 'jpeg':
                                $imageFileName .= '.jpeg';
                                $source = imagecreatefromjpeg($img->getPath());
                                imagejpeg($source, $imageFileRealPath.$imageFileName,100);
                                break;
                            case 'gif':
                                $imageFileName .= '.gif';
                                $source = imagecreatefromgif($img->getPath());
                                $width = imagesx($source);
                                $height = imagesy($source);
                                if (function_exists("imagecreatetruecolor")) {
                                    $newImg = imagecreatetruecolor($width, $height);
                                    /* --- 用以处理缩放png图透明背景变黑色问题开始 --- */
                                    $color = imagecolorallocate($newImg,255,255,255);
                                    imagecolortransparent($newImg,$color);
                                    imagefill($newImg,0,0,$color);
                                    ImageCopyResampled($newImg, $source, 0, 0, 0, 0, $width, $height, $width, $height);
                                } else {
                                    $newImg = imagecreate($width, $height);
                                    ImageCopyResized($newImg, $source, 0, 0, 0, 0, $width, $height, $width, $height);
                                }
                                imagejpeg($source, $imageFileRealPath.$imageFileName,100);
                                break;
                            case 'png':
                                $imageFileName .= '.png';
                                $source = imagecreatefrompng($img->getPath());
                                $width = imagesx($source);
                                $height = imagesy($source);
                                if (function_exists("imagecreatetruecolor")) {
                                    $newImg = imagecreatetruecolor($width, $height);
                                    
                                    /* --- 用以处理缩放png图透明背景变黑色问题开始 --- */
                                    $color = imagecolorallocate($newImg,255,255,255);
                                    imagecolortransparent($newImg,$color);
                                    imagefill($newImg,0,0,$color);
                                    ImageCopyResampled($newImg, $source, 0, 0, 0, 0, $width, $height, $width, $height);
                                } else {
                                    $newImg = imagecreate($width, $height);
                                    ImageCopyResized($newImg, $source, 0, 0, 0, 0, $width, $height, $width, $height);
                                }
                                imagejpeg($newImg, $imageFileRealPath.$imageFileName,100);
                                break;
                        }
                        $startColumn = $this->ABC2decimal($startColumn);
                        $data[$startRow-1][$startColumn] = $imageFileRealPath . $imageFileName;
                    } catch (\Throwable $th) {
                        throw $th;
                    }
                    
                }
                $rowsData = array();
                foreach ($data as $key => $rowData) {
                    $serial = safty_value($rowData[0],0,'intval'); // 第一列 序号
                    $title = safty_value($rowData[1],'','trim'); // 第二列 名称
                    $logo_save_path = safty_value($rowData[2],'','trim');  // logo图形保存路径
                    $remark = safty_value($rowData[3],'','trim');  //备注

                    if ($serial >0 && $logo_save_path!=="" && $title!==""){

                        array_push($rowsData,array(
                            "serial"=>$serial,
                            "title"=>$title,
                            "logo_path"=>$logo_save_path,
                            "remark"=>$remark
                        ));
                            
                    }
                }
                // 将导入的数据生成文件缓存
                $this->update_excel_data($rowsData); 
                $upload_result = array(
                    "count" => count($rowsData),
                    "success" => 1,
                    "state"=>"SUCCESS"
                );
                
            } else {
                $upload_result = array(
                    "message" => "上传失败!",
                    "success" => 0
                );
            }
            echo json_encode($upload_result);
    }
Copier après la connexion

Voici le processus de fonctionnement, comme suit :

Vous apprendre étape par étape comment utiliser ThinkPHP+phpExcel pour importer et exporter des données Excel (Pratique)

Sélectionnez le fichier. pour télécharger et importer. Une fois l’exportation réussie, il invitera et actualisera la page de liste actuelle.

Vous apprendre étape par étape comment utiliser ThinkPHP+phpExcel pour importer et exporter des données Excel (Pratique)

Liste après exportation réussie :

Vous apprendre étape par étape comment utiliser ThinkPHP+phpExcel pour importer et exporter des données Excel (Pratique)

À ce stade, l'importation des données est terminée.

Insuffisant, le fichier Excel importé n'a pas été traité après l'importation des données, il est donc recommandé de le supprimer

Exporter

Exportons maintenant les données ci-dessus et exportons la définition du format Excel dont vous avez besoin. pour définir d'abord l'en-tête. :

$first_cells = array(
    array("serial","序号"),
    array("title","名称"),
    array("logo","logo"),
    array("remark","描述")
);
Copier après la connexion

L'étape suivante consiste à encapsuler les données selon le format de l'en-tête du tableau, comme suit :

foreach ($excel_data as $key => $row_info) {
    array_push($first_rows_data,array(
        "serial"=>$row_info['serial'],
        "title"=>$row_info['title'],
        "logo"=>$row_info['logo_path'],
        "remark"=>$row_info['remark']
    ));
}
Copier après la connexion

À ce stade, l'encapsulation des données est terminée, le code complet est le suivant :

    public function export(){
        $excel_detail = array(
            "author"=>"devpoint",
            "date"=>join(" ",$artifacts_full)
        );
        // 定义导出Excel表格信息
        $sheets = array(); // Excel表信息,一维代表一个数据表
        // 定义表头
        $first_cells = array(
            array("serial","序号"),
            array("title","名称"),
            array("logo","logo"),
            array("remark","描述")
        );
        // 为表增加数据
        $excel_data = get_file_cache("excel_data");
        $first_rows_data = array();
        // 数据与上面表头对应
        foreach ($excel_data as $key => $row_info) {
            array_push($first_rows_data,array(
                "serial"=>$row_info['serial'],
                "title"=>$row_info['title'],
                "logo"=>$row_info['logo_path'],
                "remark"=>$row_info['remark']
            ));
        }
        array_push($sheets,array(
            "title"=>"前端项目流行框架",
            "cells"=>$first_cells,
            "rows"=>$first_rows_data
        ));
        $xlsName  = "Excel数据导出";
        $xlsName = $xlsName  . date('YmdHis');
        $this->exportExcel($xlsName,$sheets,$excel_detail);
    }
Copier après la connexion

La fonction exportExcel écrit les données dans Excel, et définit le style du tableau. Le code complet est le suivant : exportExcel将数据写入到Excel,并定义表格的样式,完整代码如下:

    protected function exportExcel($expTitle,$xlsSheets,$detail){
        import("Org.Util.PHPExcel");
        import("Org.Util.PHPExcel.Writer.Excel5");
        import("Org.Util.PHPExcel.IOFactory.php");
        $fileName = $expTitle;
        $objPHPExcel = new \PHPExcel();
        $objPHPExcel->getDefaultStyle()->getFont()->setName('宋体');
        // Excel列名称
	$cellName = array(
	'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U',
	'V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM',
	'AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ'
	);
        foreach ($xlsSheets as $index => $sheet_info) {
            $sheet_title = $sheet_info['title'];
            if ($index>0){
                // Excel默认已经建好的数据表,超过一张需要执行这里创建一个工作表
                $newSheet = new \PHPExcel_Worksheet($objPHPExcel, $sheet_title); //创建一个工作表
                $objPHPExcel->addSheet($newSheet);
            } else {
                $objPHPExcel->getActiveSheet($index)->setTitle($sheet_title);
            }
            $expCellName = $sheet_info['cells'];
            $expTableData = $sheet_info['rows'];
            $cellNum = count($expCellName);
            $dataNum = count($expTableData);
            $cellmerget = "";
            $cellWidths = array();
            $sheet_head_title = $sheet_title;
            // 下面需要为每个工作表定义宽度
            switch ($index) {
                case 1: // 每张表的索引从 0 开始计算
                    $cellmerget = 'A1:E1';
                    $cellWidths=array(16,16,16,28,16);
                    break;
                default:
                    $cellmerget = 'A1:D1';
                    $sheet_head_title = $sheet_title ;
                    $cellWidths=array(16,16,16,36);
                    break;
            }
            $activeSheet = $objPHPExcel->setActiveSheetIndex($index);

            for($i=0;$i<$cellNum;$i++){
                $currentCellName = $cellName[$i];
                $activeSheet->getRowDimension(1)->setRowHeight(36);
                $activeSheet->getColumnDimension($currentCellName)->setWidth($cellWidths[$i]);
                $activeSheet->getStyle($currentCellName.&#39;1&#39;)->getFont()->setSize(12)->setBold(true);
                $activeSheet->getStyle($currentCellName.&#39;1&#39;)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
            }

            $activeSheet->mergeCells($cellmerget);//合并单元格
            $activeSheet->setCellValue(&#39;A1&#39;, $sheet_head_title);
            $activeSheet->getStyle(&#39;A1&#39;)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            $activeSheet->getStyle(&#39;A1&#39;)->getFont()->setSize(20);
            $activeSheet->getRowDimension(1)->setRowHeight(50);
            $styleThinBlackBorderOutline = array(  
                    &#39;borders&#39; => array (  
                        &#39;outline&#39; => array (  
                                &#39;style&#39; => \PHPExcel_Style_Border::BORDER_MEDIUM,   //设置border样式
                                &#39;color&#39; => array (&#39;argb&#39; => &#39;FF9b9b9b&#39;),          //设置border颜色  
                        ),  
                ),  
            );  
            for($i=0;$i<$cellNum;$i++){
                $currentCellName = $cellName[$i];
                $activeSheet->getRowDimension(2)->setRowHeight(36);
                $activeSheet->getColumnDimension($currentCellName)->setWidth($cellWidths[$i]);
                $activeSheet->setCellValue($currentCellName.&#39;2&#39;, $expCellName[$i][1]);
                $activeSheet->getStyle($currentCellName.&#39;2&#39;)->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID);
                $activeSheet->getStyle($currentCellName.&#39;2&#39;)->getFill()->getStartColor()->setARGB(&#39;FFc6efcd&#39;);
                $activeSheet->getStyle($currentCellName.&#39;2&#39;)->getFont()->setSize(12)->setBold(true);
                $activeSheet->getStyle($currentCellName.&#39;2&#39;)->applyFromArray($styleThinBlackBorderOutline);  
                $activeSheet->getStyle($currentCellName.&#39;2&#39;)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
                $activeSheet->freezePane($currentCellName.&#39;3&#39;);  // 锁定表头,3 意味着锁定第3行上面的
            }
            switch ($index) {
                case 1:

                    break;
                default:
                    $start_row_index = 3; // 数据开始索引行
                    for($i1=0;$i1<$dataNum;$i1++){
                        $objPHPExcel->getActiveSheet()->getRowDimension($i1+3)->setRowHeight(60);
                        for($j1=0;$j1<$cellNum;$j1++){
                            if ($j1===2){
                                $logo_path = $expTableData[$i1][$expCellName[$j1][0]];
                                if ($logo_path!=="" && file_exists($logo_path)){
                                    $objDrawing = new \PHPExcel_Worksheet_Drawing();
                                    $objDrawing->setPath($logo_path);
                                    $objDrawing->setHeight(60);
                                    $objDrawing->setWidth(60);
                                
                                    $objDrawing->setOffsetX(5);
                                    $objDrawing->setOffsetY(5);
                                    $objDrawing->setCoordinates($cellName[$j1].($i1+$start_row_index));
                                    $objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
                                } else {
                                    $objPHPExcel->getActiveSheet()->setCellValue($cellName[$j1].($i1+$start_row_index), "");
                                    $objPHPExcel->getActiveSheet()->getStyle($cellName[$j1].($i1+$start_row_index))->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
                                    $objPHPExcel->getActiveSheet()->getStyle($cellName[$j1].($i1+$start_row_index))->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
                                    $objPHPExcel->getActiveSheet()->getStyle($cellName[$j1].($i1+$start_row_index))->getAlignment()->setWrapText(true);
                                }
                            } else {
                                $objPHPExcel->getActiveSheet()->setCellValue($cellName[$j1].($i1+$start_row_index), $expTableData[$i1][$expCellName[$j1][0]]);
                                $objPHPExcel->getActiveSheet()->getStyle($cellName[$j1].($i1+$start_row_index))->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
                                $objPHPExcel->getActiveSheet()->getStyle($cellName[$j1].($i1+$start_row_index))->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
                                $objPHPExcel->getActiveSheet()->getStyle($cellName[$j1].($i1+$start_row_index))->getAlignment()->setWrapText(true);
                            }
                        }
                    }
                    break;
            }
            
        }
        $objPHPExcel->setActiveSheetIndex(0);

		header(&#39;pragma:public&#39;);
		header(&#39;Content-type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8;name="&#39;.$fileName.&#39;.xlsx"&#39;);
		header("Content-Disposition:attachment;filename=$fileName.xlsx"); // attachment新窗口打印inline本窗口打印
		$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, &#39;Excel2007&#39;);
		$objWriter->save(&#39;php://output&#39;);
		exit;
    }
Copier après la connexion

导出后的格式如下:

Vous apprendre étape par étape comment utiliser ThinkPHP+phpExcel pour importer et exporter des données Excel (Pratique)

锁定表头

锁定表头是Excel比较常见的功能,可以方便查阅者查阅数据,使用 phpExcel 设置表头的代码如下:

$activeSheet->freezePane($currentCellName.&#39;3&#39;); // 3 意味着锁定第3行上面的行数
Copier après la connexion

表格边框样式

上面的代码设置表格边框样式的代码为PHPExcel_Style_Border::BORDER_MEDIUM,在 phpExcel 中有14个配置可选项目。

PHPExcel_Style_Border::BORDER_NONE;
PHPExcel_Style_Border::BORDER_THIN;
PHPExcel_Style_Border::BORDER_MEDIUM;
PHPExcel_Style_Border::BORDER_DASHED;
PHPExcel_Style_Border::BORDER_DOTTED;
PHPExcel_Style_Border::BORDER_THICK;
PHPExcel_Style_Border::BORDER_DOUBLE;
PHPExcel_Style_Border::BORDER_HAIR;
PHPExcel_Style_Border::BORDER_MEDIUMDASHED;
PHPExcel_Style_Border::BORDER_DASHDOT;
PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT;
PHPExcel_Style_Border::BORDER_DASHDOTDOT;
PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT;
PHPExcel_Style_Border::BORDER_SLANTDASHDOT;
Copier après la connexion

1. BORDER_NONE

对应的完整配置项为 PHPExcel_Style_Border::BORDER_NONE

\PHPExcel_Style_Border::BORDER_THIN
Copier après la connexion

Le format exporté est le suivant :

Vous apprendre étape par étape comment utiliser ThinkPHP+phpExcel pour importer et exporter des données Excel (Pratique)Vous apprendre étape par étape comment utiliser ThinkPHP+phpExcel pour importer et exporter des données Excel (Pratique)

Verrouiller l'en-tête

Le verrouillage de l'en-tête est courant dans la fonction Excel, ce qui peut faciliter la vérification des données par les lecteurs. Utilisez phpExcel pour définir le code d'en-tête comme suit : Vous apprendre étape par étape comment utiliser ThinkPHP+phpExcel pour importer et exporter des données Excel (Pratique)

\PHPExcel_Style_Border::BORDER_MEDIUM
Copier après la connexion

Style de bordure de tableau

Le code pour définir le style de bordure de tableau dans le code ci-dessus est PHPExcel_Style_Border::BORDER_MEDIUM</ code>. Il y a <p>14<img src="https://img.php.cn/upload/image/976/107/161/163170676514147Vous apprendre étape par étape comment utiliser ThinkPHP+phpExcel pour importer et exporter des données Excel (Pratique)" title="163170676514147Vous apprendre étape par étape comment utiliser ThinkPHP+phpExcel pour importer et exporter des données Excel (Pratique)" alt="Vous apprendre étape par étape comment utiliser ThinkPHP+phpExcel pour importer et exporter des données Excel (Pratique)"/>éléments facultatifs de configuration dans <code>phpExcel.

\PHPExcel_Style_Border::BORDER_DASHED
Copier après la connexion

1. BORDER_NONE

L'élément de configuration complet correspondant est PHPExcel_Style_Border::BORDER_NONE, l'effet est le suivant : Vous apprendre étape par étape comment utiliser ThinkPHP+phpExcel pour importer et exporter des données Excel (Pratique)

2.

Vous apprendre étape par étape comment utiliser ThinkPHP+phpExcel pour importer et exporter des données Excel (Pratique)

3. BORDER_MEDIUM

\PHPExcel_Style_Border::BORDER_DOTTED
Copier après la connexion

1Vous apprendre étape par étape comment utiliser ThinkPHP+phpExcel pour importer et exporter des données Excel (Pratique)

4. BORDER_DASHED

\PHPExcel_Style_Border::BORDER_THICK
Copier après la connexion

1Vous apprendre étape par étape comment utiliser ThinkPHP+phpExcel pour importer et exporter des données Excel (Pratique)

5. 7. BORDER_DOUBLE

\PHPExcel_Style_Border::BORDER_DOUBLE
Copier après la connexion
🎜🎜 🎜🎜🎜8.
\PHPExcel_Style_Border::BORDER_HAIR
Copier après la connexion

1Vous apprendre étape par étape comment utiliser ThinkPHP+phpExcel pour importer et exporter des données Excel (Pratique)

9. BORDER_MEDIUMDASHED

\PHPExcel_Style_Border::BORDER_MEDIUMDASHED
Copier après la connexion

1Vous apprendre étape par étape comment utiliser ThinkPHP+phpExcel pour importer et exporter des données Excel (Pratique)

10. BORDER_DASHDOT

\PHPExcel_Style_Border::BORDER_DASHDOT
Copier après la connexion

1Vous apprendre étape par étape comment utiliser ThinkPHP+phpExcel pour importer et exporter des données Excel (Pratique)

11. BORDER_MEDIUMDASHDOT

\PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT
Copier après la connexion

1Vous apprendre étape par étape comment utiliser ThinkPHP+phpExcel pour importer et exporter des données Excel (Pratique)

12. BORDER_DASHDOTDOT

\PHPExcel_Style_Border::BORDER_DASHDOTDOT
Copier après la connexion

1Vous apprendre étape par étape comment utiliser ThinkPHP+phpExcel pour importer et exporter des données Excel (Pratique)

13. BORDER_MEDIUMDASHDOTDOT

\PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT
Copier après la connexion

1Vous apprendre étape par étape comment utiliser ThinkPHP+phpExcel pour importer et exporter des données Excel (Pratique)

14. BORDER_SLANTDASHDOT

\PHPExcel_Style_Border::BORDER_SLANTDASHDOT
Copier après la connexion

1Vous apprendre étape par étape comment utiliser ThinkPHP+phpExcel pour importer et exporter des données Excel (Pratique)

部署

在部署上,通常的架构是 nginx + php-fpm,对于Excel中图片比较多的数据导入需要设置加大上传文件的限制和超时时间。

在文件上传上,通常会出现 413 request Entity too Large 错误,解决的办法是在 nginx 配置中增加以下配置:

client_max_body_size  2048m;
Copier après la connexion

相应的 PHP 配置也需要修改,需要修改 php.ini

upload_max_filesize = 2048M
post_max_size = 2048M
Copier après la connexion

Excel数据导入,通常会触发504错误,这种情况一般是执行时间太短,涉及的 nginx 配置:

fastcgi_connect_timeout 600;
Copier après la connexion

php-fpm 中的 www.conf

request_terminate_timeout = 1800
Copier après la connexion

环境问题个人觉得是后台开发经常发生的,最佳的方式是实际运行出一个最佳的配置,将其制作成 docker 镜像,这样可以确保环境迁移或者其他场合需要,可以快速完成环境配置,而且不容易出问题。

原文地址:https://juejin.cn/post/6982953271933550628

作者:天行无忌

推荐学习:《PHP视频教程

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:juejin.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal