2015-08-03 133 views
0

我正在为用户每天导入一个.csv文件一次。
现在我想添加错误处理,如果文件无法导入。
事情是,我想在收集和邮寄给我的过程中收集所有错误。PHP通过电子邮件错误处理导入.csv

如果脚本遇到错误,它不应该停止,而是继续执行.csv文件的其余部分。

我现在唯一的一件事情就是检查文件是否存在,但我目前正在处理错误处理部分。

任何人都可以告诉我如何收集和邮寄错误,而不是显示它们?

这是我SOFAR ...

<?php 
    $filepath = get_bloginfo('template_directory')."/import.csv"; 
    setlocale(LC_ALL, 'nl_NL'); 
    ini_set('auto_detect_line_endings',TRUE); 
    $file = fopen($filepath, "r") or die("Error opening file"); 
    $i = 0; 

    while(($line = fgetcsv($file, 1000, ";")) !== FALSE) { 
     if($i == 0) { 
      $c = 0; 
      foreach($line as $col) { 
       $cols[$c] = $col; 
       $c++; 
      } 
     } else if($i > 0) { 
      $c = 0; 
      foreach($line as $col) { 
       $data[$i][$cols[$c]] = $col; 
       $c++; 
      } 
     } 
     $i++; 
    } 
    echo '<pre>'; 
    print_r($data); 
    echo '</pre>'; 
    foreach ($data as $gebruiker){ 
     $username = $gebruiker['username']; 
     if (username_exists($username) && strtolower($gebruiker['status']) == 'published'){ 
      // IF USER EXISTS: UPDATE 
      $user = get_user_by('login', $username); 
      update_user_meta($user->ID, 'first_name', $gebruiker['first_name']); 
      update_user_meta($user->ID, 'surname_prefix', $gebruiker['surname_prefix']); 
      update_user_meta($user->ID, 'last_name', $gebruiker['last_name']); 
      update_user_meta($user->ID, 'company', $gebruiker['bedrijf']); 
      update_user_meta($user->ID, 'function', $gebruiker['functie']); 
      update_user_meta($user->ID, 'region', $gebruiker['regio']); 
      update_user_meta($user->ID, 'market', $gebruiker['product_doelgroep']); 
      update_user_meta($user->ID, 'phone', $gebruiker['telefoonnummer']); 
      update_user_meta($user->ID, 'provincie', $gebruiker['provincie']); 
      $wpdb->update($wpdb->users, array( 'user_email' => $gebruiker['email'], 'user_registered' => date("Y-m-d H:i:s")), array('ID' => $user->ID)); 
     }else{ 
      $empty_surname_prefix = ($gebruiker['surname_prefix'] == ' ' ? '' : $gebruiker['surname_prefix'].' '); 
      $users = wp_insert_user(
       array(// ADD NEW USER TO DATABASE 
        'user_login' => $gebruiker['username'], 
        'user_pass'  => $gebruiker['password'], 
        'first_name' => $gebruiker['first_name'], 
        'last_name'  => $empty_surname_prefix . $gebruiker['last_name'], 
        'user_email' => $gebruiker['email'], 
        'display_name' => $gebruiker['first_name'] . ' ' . $gebruiker['last_name'], 
        'nickname'  => $gebruiker['first_name'] . '' . $gebruiker['last_name'], 
        'role'   => 'subscriber' 
       )      
      ); 
      foreach ($data as $update_user) { 
        // ADD ADDITIONAL DATA TO JUST CREATED USER 
        update_user_meta($users, 'company', $gebruiker['bedrijf']); 
        update_user_meta($users, 'function', $gebruiker['functie']); 
        update_user_meta($users, 'region', $gebruiker['regio']); 
        update_user_meta($users, 'market', $gebruiker['product_doelgroep']); 
        update_user_meta($users, 'phone', $gebruiker['telefoonnummer']); 
        update_user_meta($users, 'provincie', $gebruiker['provincie']); 
      } 
     }if(username_exists($username) && strtolower($gebruiker['status']) == 'archived'){// DELETE USER IF STATUS IS ARCHIVED 
      require_once(ABSPATH.'wp-admin/includes/user.php'); 
      $user = get_user_by('login', $username); 
      echo $user->ID.'<br>'; 
      wp_delete_user($user->ID); 
     } 
    } 
?> 

请记住,我目前工作的错误处理,所以没有处理现在。

感谢

回答

1

一种通用方法:

//create an array to hold errors: 

$errors = []; 

//when en error occurs, add it to the array 
if($somethingWentWrong){ 
    $errors[] = 'The error message goes here'; 
} 

//when finished, check for errors and email if found 

if(count($errors) > 0){ 
    mail('[email protected]', 'some errors happened', implode($erros, "\n")); 
}