0

我为 wordpress 制作了一个插件,但是我的服务器上允许的内存大小有问题,它是 128,它们不允许我在运行时增加内存。

我的插件具有将用户数据导出到 csv 并通过电子邮件发送给用户的功能。我在这个 wordpress 上出现胎儿错误,functions.php 第 252 行

是否有有效的方法来优化以下功能以防止出错

谢谢你

function is_serialized( $data ) {
        // if it isn't a string, it isn't serialized
        if ( ! is_string( $data ) )
            return false;
        $data = trim( $data );
        if ( 'N;' == $data )
            return true;
        $length = strlen( $data );
        if ( $length < 4 )
            return false;
        if ( ':' !== $data[1] )
            return false;
        $lastc = $data[$length-1];
        if ( ';' !== $lastc && '}' !== $lastc )
            return false;
        $token = $data[0];
        switch ( $token ) {
            case 's' :
                if ( '"' !== $data[$length-2] )
                    return false;
            case 'a' :
            case 'O' :
                return (bool) preg_match( "/^{$token}:[0-9]+:/s", $data );
            case 'b' :
            case 'i' :
            case 'd' :
                return (bool) preg_match( "/^{$token}:[0-9.E-]+;\$/", $data );
        }
        return false;
    }

我的功能 - 文件是从管理面板动态获取的

$outFile = '';
                $blogusers = get_users();

                // retrieve the current options
                $spueIntervall = get_option('spue_intervall');
                //fileds are dynamic
                $spueSeperator = get_option('spue_seperator');
                $spueFields = get_option('spue_fields');

                // Check if the functions is already loaded
                if (!function_exists('get_userdata'))
                    require_once (ABSPATH . 'wp-includes/pluggable.php');

                // Setup the top-line of the file
                foreach ($spueFields AS $fieldKey => $fieldValue)
                {

                    if ($fieldValue == 1)
                    {

                        $outFile .= $fieldKey . $spueSeperator;

                    }

                }

                $outFile .= "\n";


                // Loop to all users
                foreach ($blogusers as $user) 
                {

                    // Get the userdate
                    $user_info = get_userdata($user->ID);

                    // Only output the needed data
                    foreach ($spueFields AS $fieldKey => $fieldValue)
                    {

                        if ($fieldValue == 1)
                        {

                            $outFile .= '"' . $user_info->{$fieldKey} . '"' . $spueSeperator;

                        }

                    }

                    $outFile .= "\n";

                }           


                // Save 
                file_put_contents( dirname(__FILE__) . '\spue-export.csv', utf8_encode($outFile));
4

1 回答 1

1

知道了

foreach ( $blogusers as $user ) {
                $data = array();
                foreach ($spueFields AS $fieldKey => $fieldValue) {
                if ($fieldValue == 1)
                        {
                    $value = isset( $user->{$fieldKey} ) ? $user->{$fieldKey} : '';
                    $value = is_array( $value ) ? serialize( $value ) : $value;
                    $data[] = '"' . str_replace( '"', '""', $value ) . '"';
$outFile.=implode( ',', $data ) . "\n";                 
                }
于 2012-05-30T12:07:10.307 回答