User Tools

Site Tools


documents:cakephp_best_practice

This is an old revision of the document!


CakePHP best practice

1. Save large record set

[php]

public function submitData($data = array()) {

  if (!empty($data)) {
  $queryString = '';
  $queryData = array();
  $i = 0;
		
foreach ($data as $item) {
    if (empty($queryString)) {
	$queryString = "INSERT INTO `shipstations` (";
	$columns = array();
	$values = array();
	foreach($item as $key=>$value) {
	    $columns[] = "`$key`";
	    $values[] = !is_numeric($value) ? "'" . Utils::mres($value) . "'" : $value;
	}
				
	$queryString .= implode(',', $columns) . ') VALUES ';
	$queryData[] = '(' . implode(',', $values) . ')';
    } else {
	$values = array();
	foreach($item as $key=>$value) {
	$values[] = !is_numeric($value) ? "'" . $value . "'" : $value;
    }
    $queryData[] = '(' . implode(',', $values) . ')';
}
			
$i++;
			
if ($i == 500) {
    $queryString .= implode(',', $queryData);
    $this->query($queryString);
    $queryString = '';
    $queryData = array();
    $i = 0;
}
  }
  $queryString .= implode(',', $queryData);
  if (!empty($queryString)) {
$this->query($queryString);
  }

} }

[/php]

documents/cakephp_best_practice.1429970863.txt.gz · Last modified: 2015/04/25 14:07 by admin