【发布时间】:2015-09-17 10:55:48
【问题描述】:
是否可以将 PHP 数组存储到我的服务器,现在它总是在有人从 CSV 文件重新加载页面时创建,但这是不必要的,因为该文件仅在每小时后才有机会。
ATM,页面加载大约需要 9 秒,这很长。 CSV 文件有 10k+ 行,每行有 9 个元素,因此如果服务器不必为每个用户处理 100k 个元素,这对性能非常有利。
我已经有一个用于下载 csv 文件的 cronjob,所以最好在下载完成后执行 parse 命令,每小时只执行一次。
定时任务:
<?php
function download_remote_file($file_url, $save_to) {
$content = file_get_contents($file_url);
file_put_contents($save_to, $content);
}
download_remote_file(<url here>, realpath(".") . '/dump.csv');
?>
每次重新加载页面都会发生这种情况:
1st:解析数据到数组
$url = 'dump.csv';
$csvData = file_get_contents($url);
$lines = explode(PHP_EOL, $csvData);
$array = array();
foreach ($lines as $line) {
$line = str_replace("\\", "\", $line);
$line = str_replace("#", "#", $line);
$array[] = str_getcsv($line);
第二个:将数组传递给Javascript
var array = <?php echo json_encode( $array ) ?>;
第三:创建HTML表格
//some code
4th:初始化数据表插件
$(document).ready( function () {
createtable();
$('#scoreboard').DataTable( {
"iDisplayLength": 50,
language: {
decimal: ".",
},
"lengthMenu": false,
"bLengthChange": false
} );
} );
有什么可以更快完成的吗?
如前所述,将 php 数组保存在服务器端,或者以某种方式将 JS 数组与 HTML 表一起保存?
-内狼
【问题讨论】:
-
您可以尝试将解析后的数组存储在会话或 Memcached 中。也许存储了一个带有硬编码数组的 PHP 文件。打开 CSV 文件,对其进行解析,然后将其保存为 PHP 文件。然后加载 PHP 文件。
-
您没有将其存储在数据库中是否有原因?
-
我认为数据库是不必要的,因为它也适用于 php。我也不知道如何将文件从 url 直接存储到 sql
-
您可以简单地编写一个 PHP 文件,其中包含生成的数组,并包含该文件。或者您可以将 json 写入 javaScript 文件并将其包含到您的输出中。
-
为什么它需要以 CSV 文件而不是数据库开头?
标签: javascript php jquery arrays performance