定制 pllano/csv 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

pllano/csv

Composer 安装命令:

composer require pllano/csv

包简介

Read very large CSV files in parts

README 文档

README

Latest Version Software License

Read large data from csv files in parts in php

System Requirements

You need *PHP >= 5.3

Install

Install Csv Reader using Composer.

$ composer require pllano/csv

or in composer.json

"require": {
	"pllano/csv": "1.0.2"
}

Fast start => tests/FastStart.php

Save the above code fragment as test.php in your Web root folder.

require 'vendor/autoload.php';
//	require_once '/vendor/pllano/csv/src/Reader.php';
//	require_once __DIR__.'/src/Reader.php';

$filename = 'test.csv';

$csv = new Pllano\Csv\Reader($filename);

$records = $csv->Read();

$count = count($records);
if ($count >= 1) {
	foreach ($records as $item) {
			
		print_r($item);
		print_r('<br>');
		
	}
}

Read one line => tests/ReadOneLine.php

require 'vendor/autoload.php';
//	require_once '/vendor/pllano/csv/src/Reader.php';
//	require_once __DIR__.'/src/Reader.php';

$filename = 'test.csv';

$csv = new Pllano\Csv\Reader($filename);

$csv->setItemStart(10);
$csv->setExecute(1);

$records = $csv->Read();

print_r($records);

/*
Array
(
	[0] => Array
	(
	[name] => Lorem
	[number] => 11
	[price] => 22.00
	)
)
*/

Real Line Key => tests/RealLineKey.php

require 'vendor/autoload.php';
//	require_once '/vendor/pllano/csv/src/Reader.php';
//	require_once __DIR__.'/src/Reader.php';

$filename = 'test2.csv';

$csv = new Pllano\Csv\Reader($filename);
	
$csv->setItemStart(10); // start item - default: 1
$csv->setExecute(50); // amount - default: 0

$records = $csv->Read();
	
$item_start = $csv->getItemStart(); // returns 0

$count = count($records);
if ($count >= 1) {
	foreach ($records as $key => $item) {
		
	$real_key = $key + $item_start;
		
		print_r($real_key);
		print_r(' - ');
		print_r($item);
		print_r('<br>');
		
	}
}

Example => tests/ReadRefresh.php

function clean($value = '')
{
	$value = trim($value);
	$value = stripslashes($value);
	$value = strip_tags($value);
	$value = htmlspecialchars($value, ENT_QUOTES);
	//	$value = htmlentities($value);
	return $value;
}

$filename = 'test.csv';
$start = 0;
$rows_total = 0;
	
if ($_GET["filename"]) {$filename = clean($_GET["filename"]);}
if ($_GET["start"]) {$start = clean($_GET['start']);}
	
//	Include Composer autoloader if not already done.
require 'vendor/autoload.php';
//	require_once '/vendor/pllano/csv/src/Reader.php';
//	require_once __DIR__.'/src/Reader.php';
	
$csv = new Pllano\Csv\Reader($filename);
	
//	$csv->setDelimiter(';'); // default: ;
//	$csv->setEnclosure('"'); // default: "
//	$csv->setEscape('\\'); // default: \\
//	$csv->setHeaders('name;number;price'); // default: null
$csv->setItemStart($start); // start item - default: 0
$csv->setExecute(10); // amount - default: 0
//	$csv->setTimeLimit(29); // Monitoring the execution time of the script in seconds set_time_limit
//	$csv->setAutoDetection(false); // Auto Detection Delimiter false|true - default: false
	
$stop = 500;

$records = $csv->Read();
	
$count = count($records);
	if ($count >= 1) {
		foreach ($records as $item) {
		
			print_r($item);
			print_r('<br>');
	
		}
	}
	
$rows_total = $csv->countItems(); // returns total items
//	$csv->getHeaders(); // returns Array ( [0] => name [1] => number [2] => price )
//	$csv->getItemStart(); // returns string
//	$csv->getExecute(); // returns amount 10
$end = $csv->getItemEnd(); // returns 11
//	$csv->getAutoDetection(); // returns false|true
//	$csv->getCsvControl(); // returns Array ( [0] => ; [1] => " [2] => \ )

if ($filename && $end >= 0 && $rows_total >= 0) {
	
	if ($end <= $rows_total && $end <= $stop) {
		//	start //site.com/test.php
		print '<meta http-equiv="Refresh" content="0; url=/test.php?filename='.$filename.'&amp;start='.$end.'">';
	}

	if ($end >= $stop || $end >= $rows_total) {
		print_r('<br>');
		print_r('Memory, MB: '.$csv->getMemory());
		print_r('<br>');
		print_r('Time, sec: '.$csv->getTime());
	}
	
}

Security

If you discover any security related issues, please email open.source@pllano.com instead of using the issue tracker.

License

The MIT License (MIT). Please see LICENSE for more information.

pllano/csv 适用场景与选型建议

pllano/csv 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 9 次下载、GitHub Stars 达 0, 最近一次更新时间为 2017 年 12 月 11 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「csv」 「read」 「parts」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 pllano/csv 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 pllano/csv 我们能提供哪些服务?
定制开发 / 二次开发

基于 pllano/csv 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 9
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2017-12-11