Wordpress插件导致页面无法加载/不显示请求的数据

时间:2015-03-17 07:42:29

标签: wordpress-plugin wordpress

这是我正在制作的插件。它的任务是解析CSV文件并将其作为HTML表格显示在wordpress页面上,其中存在短代码。

当我激活插件并访问包含它的短代码的页面时,页面将无法加载,我的浏览器(FireFox,Chrome)会尝试加载页面而不能,我甚至没有获得WSoD;当发生这种情况时,我也检查我的服务器的统计数据,并注意到CPU使用率为85%,这是非常不正常的。

插件停用后,CPU使用率恢复正常(通常为0-14%),包含插件短代码的页面将加载(但显然不会加载短代码请求的数据)。

我完全不知道造成这种情况的原因。

我甚至尝试使用我发现的已知工作脚本执行类似任务的示例,并且每次都经历过相同的结果。

它尝试打开的CSV文件由Excel 2003生成,CSV文件位于插件文件夹中。

以下是CSV文件的内容:

Make, Model, Origin, Color, Miles, Options
Chevy, Tahoe, Delaware, Black, 10000, LX
Ford, F150, Texas, Red, 5000, S
Chevy, Corvette, Utah, Red, 12000, SE
Mazda, Miata, Florida, Blue, 90000, LX

<?php
   /*
   Plugin Name: CSV 3
   Plugin URI: 
   Description: Displays CSV files as HTML tables
   Version: 1.0
   Author: Kreation
   Author URI: 
   License:
   */

add_shortcode( "csv", "open_csv_file");

function open_csv_file() {
$file = file_get_contents( plugin_dir_path( __FILE__ )  . 'Book1.csv' );
    $handle = fopen("$file", "r");
    $data = fgetcsv($handle, 1000, ",");
    $color = $data[3];
    $options = $data[5];
    echo('<table>');
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {

        $color = $data[3];
        $options = $data[5];
        //generate HTML
        echo('<tr data-color="' . $color . '" data-options="' . $options . '">');
        foreach ($data as $index=>$val) {
            echo('<td>');
            echo htmlentities($val, ENT_QUOTES);
            echo('</td>');
        }
        echo('</tr>');
    }
    echo("</table>");
    fclose($handle);
    }
?>

1 个答案:

答案 0 :(得分:1)

确保该文件存在于该位置,尝试使用plugin_dir_path获取确切的目录位置。其次,在每次刷新时,它都会提取文件中的所有数据,我猜这不是你想要的。因此,您应该尝试将其保存在数据库中并对其进行时间缓存。