有两个函数,一个是init
函数,用于从数据库获取一些信息,然后将帐户信息传输到另一个函数,从远程网站获取数据,然后test_function_save_data()
获取正确的数据并检查&安培;将它们插入数据库。
问题是:如果使用print_r($post)
中的test_function_save_data()
,该功能可以正常工作。但是删除此print_r
或将其替换为sleep()
,可以检查所有数据并将其插入数据库,但不会重定向当前页面并显示空白页。
所以,哪里出错了?怎么解决呢?
<?php
function test_function_get_account_init() {
if(test_function_get_sns_account('blog')) {
$b = 0;
foreach (test_function_get_sns_account('blog') as $team_id => $blog_account_name) {
$blog = test_theme_get_blog($team_id, $blog_account_name);
if($blog && is_array($blog['posts'])){
$b += test_function_save_data($blog['posts']);
}
}
echo '<h5successfuly!</h5>';
} else {
echo 'not found.';
}
}
function test_function_save_data($post_data) {
set_time_limit(720);
global $wpdb;
$i = 0;
foreach ($post_data as $post) {
// echo '<div style="display:none;">';
// print_r($post);
// echo '</div>';
if(test_function_check_post_unquine($post['social_origin_id']) && isset($post['social_origin_id'])) {
$social_post_data = array(
'post_title' => $post['post_title'],
'post_content' => $post['post_content'],
'post_status' => 'publish',
'post_author' => get_current_user_id(),
'post_type' => 'social_post'
);
$latest_post_id = wp_insert_post( $social_post_data );
if($post['social_origin_url']) {
add_post_meta($latest_post_id, 'social_origin_url', $post['social_origin_url']);
}
if($post['social_origin_id']) {
add_post_meta($latest_post_id, 'social_origin_id', $post['social_origin_id']);
}
if($post['user']) {
add_post_meta($latest_post_id, 'social_origin_user', $post['user']);
}
if($post['user']['team_account']) {
add_post_meta($latest_post_id, $post['user']['site_name'].'_social_user_id', $post['user']['team_account']);
}
if($post['media']) {
add_post_meta($latest_post_id, 'social_origin_thumbnail', $post['media']['url']);
}
$i++;
}
flush();
}
return $i;
}
答案 0 :(得分:0)
这看起来像wordpress代码?你有没有测试过print_r一个$ post?在某些框架中,大多数对象都是非常复杂的类的实例。对于前者在laravel中,如果您尝试print_r单个模型对象,它将导致大量数据,因此在循环中执行此操作可能会导致超时。通常有一种方法只能获取对象的属性。希望这有帮助,也许这应该是评论,但我的代表是不够的