为什么自定义插件会减慢页面加载速度?

时间:2017-12-20 作者:Vanina Yordanova

我创建了5个与Apigee通信的自定义插件。(创建开发人员、删除帐户、创建应用程序)。我想将所有内容合并到一个文件夹中,所以我创建了一个加载器。php文件:

 <?php
/*
Plugin Name: Apigee
Description: Contains plugin CreateDev, plugin CreateDevApp, plugin 
DeleteAccount, plugin GetApIProducts and plugin GetDevApps
*/

require plugin_dir_path( __FILE__ ) . \'CreateDev.php\';
require plugin_dir_path( __FILE__ ) . \'CreateDevApp.php\';
require plugin_dir_path( __FILE__ ) . \'DeleteAccount.php\';
require plugin_dir_path( __FILE__ ) . \'GetApIProducts.php\';
require plugin_dir_path( __FILE__ ) . \'GetDevApps.php\';
?>
激活插件后,一切正常,但页面加载速度非常慢(这是以前没有发生过的)。此外,如果此插件被激活,我将无法上载媒体文件。

我做错了什么?

EDIT

function myplugin_develoepr_registration(){
$post_url=
\'https://api.enterprise....developers\';

 $arg_data = array(\'email\'=> $_POST[\'user_email\'],  "firstName" 
 =>$_POST[\'first_name\'], "lastName" => $_POST[\'last_name\'] , "userName" =>  
 $_POST[\'user_login\']  );
  $data = json_encode( $arg_data );

$args = array(\'headers\'=> array(\'Content-Type\'=>\'application/json\', 
\'Authorization\' => \'Basic XXX\'),\'body\'=> $data );

 $response = wp_remote_post( esc_url_raw( $post_url ), $args );
 $response_code = wp_remote_retrieve_response_code( $response );
 $response_body = wp_remote_retrieve_body( $response );

 print_r($_POST[\'user_email\']);
 print_r($_POST[\'first_name\']);
 print_r($_POST[\'last_name\']);
print_r( $_POST[\'user_login\'] );

if(!in_array( $response_code, array(200,201))|| is_wp_error( $response_body 
))

returnfalse;
 }

 add_action(\'user_register\',\'myplugin_develoepr_registration\')

 ?>

1 个回复
最合适的回答,由SO网友:kierzniak 整理而成

我想没有人会给你确切的答案,为什么你的代码很慢。问题是我们不知道每个文件中都有什么。您必须分析代码。配置代码的最简单方法是使用microtime.

$time = -microtime(true); 

// Here exeute code which you want to profile

$time += microtime(true); 

echo sprintf(\'Your code executed in in %fs\', $time) . \'<br>\';

exit;
我会先介绍每个require 并查看哪个加载时间最长。这可能看起来像那样。

$format = \'File %s required in %fs\';

$require_plugin_file = function( $file ) use ($format) {

    $time = -microtime(true);

    require plugin_dir_path( __FILE__ ) . $file;

    $time += microtime(true); 

    echo sprintf($format, $file, $time) . \'<br>\';
};

$require_plugin_file(\'file1.php\');
$require_plugin_file(\'file2.php\');
$require_plugin_file(\'file3.php\');
$require_plugin_file(\'file4.php\');
$require_plugin_file(\'file5.php\');

exit;
其输出可能是:

File file1.php required in 0.000260s
File file2.php required in 0.000255s
File file3.php required in 3.000257s
File file4.php required in 0.000241s
File file5.php required in 0.000235s
现在我知道file3.php 花最多的时间加载,我会在这个文件中看到问题所在。

注意:在我使用的示例代码中Anonymous functions 可从以下网址获得php 5.4.

结束

相关推荐

Calculations in functions.php

我为自己创建了一个发票主题,并试图在自定义列中获取发票总额。我已经尝试调整模板页面中使用的代码,以便在函数中显示这一点。php文件,但它不工作。我的乘法操作数出现了一个操作数错误,我不知道为什么。这是我的代码(如有任何帮助,将不胜感激)。if( $column_name == \'invoice_total\' ) { $hours = 0; // This allows counting of each sub_field //* Set repeater va