Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 提高页面性能,在服务器上保存PHP数组?_Javascript_Php_Jquery_Arrays_Performance - Fatal编程技术网

Javascript 提高页面性能,在服务器上保存PHP数组?

Javascript 提高页面性能,在服务器上保存PHP数组?,javascript,php,jquery,arrays,performance,Javascript,Php,Jquery,Arrays,Performance,是否可以将PHP数组存储到我的服务器上?现在,当有人从CSV文件重新加载页面时,总是会创建PHP数组,但这是不必要的,因为该文件仅在每小时之后才会出现 在ATM机上,页面加载大约需要9秒,这相当长。CSV文件有10k+行,每行9个元素,因此如果服务器不必为每个用户处理100k个元素,那么它的性能将非常好 我已经有了一个用于下载csv文件的cronjob,因此如果在下载完成后执行parse命令(每小时仅执行一次)就好了 cronjob: <?php function download_re

是否可以将PHP数组存储到我的服务器上?现在,当有人从CSV文件重新加载页面时,总是会创建PHP数组,但这是不必要的,因为该文件仅在每小时之后才会出现

在ATM机上,页面加载大约需要9秒,这相当长。CSV文件有10k+行,每行9个元素,因此如果服务器不必为每个用户处理100k个元素,那么它的性能将非常好

我已经有了一个用于下载csv文件的cronjob,因此如果在下载完成后执行parse命令(每小时仅执行一次)就好了

cronjob:

<?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');
?>
第二:将数组传递给Javascript

var array = <?php echo json_encode( $array ) ?>;    
第四:初始化数据表插件

$(document).ready( function () {
    createtable();
    $('#scoreboard').DataTable( {
        "iDisplayLength": 50,
        language: {
            decimal: ".",       
        },
        "lengthMenu": false,
        "bLengthChange": false
    } );
} );
有什么可以做得更快的吗

如前所述,将php数组保存到服务器端,或者以某种方式将JS数组与HTML表一起保存


-Innerwolf分析CSV后,执行以下操作:

$file = fopen('/tmp/output.js', 'w');
fwrite($file, '<script type="text/javascript">');
fwrite($file, 'var array =');
fwrite($file, json_encode( $array ));
fwrite($file, ';');
fwrite($file, '</script>');
fclose($file);

copy('/path/to/script.js', '/path/to/script.js.bak');
move('/tmp/output.js', '/path/to/script.js');
$file=fopen('/tmp/output.js','w');
fwrite($file,”);
fwrite($file,'var array=');
fwrite($file,json_encode($array));
fwrite($file,“;”);
fwrite($file,”);
fclose($文件);
复制('/path/to/script.js','/path/to/script.js.bak');
移动('/tmp/output.js','/path/to/script.js');
然后,稍后在输出HTML时,只需插入:

<script type="text/javascript" src="/scripts/script.js">

在标题中。人们的浏览器也应该正确缓存它。注意复制和移动--您不需要严格地创建备份副本,但必须使用move()来替换“活动”脚本--move()或多或少是原子的,不会导致任何人获得半个文件


另外,请注意,您需要对脚本所在的位置拥有写入权限——有一些方法可以确保脚本的安全性(不要让PHP脚本在硬盘上写得到处都是),但这超出了本文的范围。

既然您提到每小时获取数据,我建议如下:

  • 使用cron获取CSV文件,并每小时将数据存储在数据库中
  • 配置要使用的数据表组件
  • 这样,您就不会在每次加载第一页时强制每个用户同时下载整个阵列。
    服务器端脚本只获取需要在表中特定页面上显示的记录数。

    您可以尝试将解析后的数组存储在会话或Memcached中。可能存储了一个带有硬编码数组的PHP文件。打开CSV文件,对其进行解析,然后将其保存到PHP文件中。然后加载PHP文件。有没有理由不将其存储在数据库中?我认为数据库是不必要的,因为它也适用于PHP。我也不知道如何将url中的文件直接存储到sqlyou,只需编写一个PHP文件,包含生成的数组,并包含此文件。或者您可以将json写入javaScript文件,并将其包含到输出中。为什么首先需要将json写入CSV文件而不是数据库?
    $file = fopen('/tmp/output.js', 'w');
    fwrite($file, '<script type="text/javascript">');
    fwrite($file, 'var array =');
    fwrite($file, json_encode( $array ));
    fwrite($file, ';');
    fwrite($file, '</script>');
    fclose($file);
    
    copy('/path/to/script.js', '/path/to/script.js.bak');
    move('/tmp/output.js', '/path/to/script.js');
    
    <script type="text/javascript" src="/scripts/script.js">