我每天与用户导入一次。csv文件。
现在我想添加错误处理,如果文件不能被导入。
问题是,我希望所有过程中的错误都能被收集并邮寄给我。
如果脚本遇到错误,它不应该停止,而是继续执行。csv文件的其余部分。
我现在唯一的事情是检查文件是否存在,但我目前正在处理错误处理部分。
谁能告诉我如何收集和邮寄错误,而不是显示它们?
这是我目前所拥有的…
<?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 );
}
}
?>
请记住,我目前正在处理错误,所以现在没有处理。
谢谢
通用方法:
//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('hello@somedomain.com', 'some errors happened', implode($erros, "'n"));
}