这是我正在制作的插件。它的任务是解析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);
}
?>
答案 0 :(得分:1)
确保该文件存在于该位置,尝试使用plugin_dir_path获取确切的目录位置。其次,在每次刷新时,它都会提取文件中的所有数据,我猜这不是你想要的。因此,您应该尝试将其保存在数据库中并对其进行时间缓存。