CakePHP best practice

1. Save large record set

If we have to insert large data, existed method saveAll() will be slow rather than core query.

public function submitData($data = array()) {
 
    if (!empty($data)) {
        $queryString = '';
        $queryData = array();
        $i = 0;
 
        foreach ($data as $item) {
	    if (empty($queryString)) {
	        $queryString = "INSERT INTO `tablename` (";
	        $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);
        }
    }
}