0

WordPressのプラグインを作成していますが、サーバーで許可されているメモリサイズに問題があります。128であり、実行時にメモリを増やすことができません。

私のプラグインには、ユーザーデータをcsvにエクスポートし、ユーザーに電子メールで送信する機能があります。このワードプレスで胎児エラーが発生しました、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 に答える