最新版にてPHP Parse error

Simplicityの特徴 フォーラム 不具合報告 最新版にてPHP Parse error

  • このトピックには9件の返信、2人の参加者があり、最後にtechnoteにより9年、 1ヶ月前に更新されました。
9件の返信スレッドを表示中
  • 投稿者
    投稿
    • #45617
      technote
      ゲスト

      わいひら様
      お世話になっております。
      プラグインの紹介及び、以下のコミットにて機能の追加ありがとうございます。
      https://github.com/yhira/simplicity2/commit/615e76294c042c734055798e895e6d4368df84ba
      しかし上記コードはPHP5.3以上を前提にしたものであるため、PHP5.3未満でエラーが発生します。

      if ( version_compare( phpversion(), '5.3', '>=' ) ) {
      
      }

      などPHPのバージョンのチェックを入れていただけると幸いです。
      よろしくお願い致します。

    • #45621
      technote
      ゲスト

      すみません。
      functions.phpでバージョンチェックを行ってもパースエラーは発生してしまうので別の方法をとる必要があります。
      考えつくのは以下の2通りです。
      1. クラス化

      if ( function_exists( 'cf_get_posts' ) ) {
      	class coordinate_with_cfiltering_plugin_class
      	{
      		private $num;
      		private $posts;
      
      		function __construct()
      		{
      			$this->posts = cf_get_posts();
      			if ( count( $this->posts ) > 0 ) {
      				add_action( 'pre_get_posts', array( $this, 'pre_get_posts' ) );
      			}
      		}
      
      		function pre_get_posts( $query )
      		{
      			$this->num = $query->query_vars['posts_per_page'];
      			$query->set( 'p', -1 );
      			add_action( 'the_posts', array( $this, 'the_posts' ) );
      			remove_action( 'pre_get_posts', array( $this, 'pre_get_posts' ) );
      		}
      
      		function the_posts()
      		{
      			remove_action( 'the_posts', array( $this, 'the_posts' ) );
      			return array_slice( $this->posts, 0, $this->num );
      		}
      	}
      
      	new coordinate_with_cfiltering_plugin_class();
      }

      2.別ファイルに移動

      if ( version_compare( phpversion(), '5.3', '>=' ) ) {
      	require_once 'functions53.php';
      }
    • #45632
      アバター画像わいひら
      キーマスター

      取り急ぎ、こんな感じで修正してみました。
      https://github.com/yhira/simplicity2/commit/6fa5fcf05e12a951ac993b117c3b3ad88457db70
      上記のような感じで大丈夫でしょうか。

    • #45633
      technote
      ゲスト

      早速の対応ありがとうございます。
      修正に問題はありません。

    • #45638
      アバター画像わいひら
      キーマスター

      ありがとうございます!
      早速修正したものをアップしておきました。

    • #45642
      アバター画像わいひら
      キーマスター

      CFilteringのトピックということで、次いでで申しわけないのですが、プラグイン動作についても質問1つよろしいでしょうか。
      CFilteringを有効化すると、毎回のアクセスごとに(1PVごとに)何かしらの計算結果をデータベースに書き込む処理を行っているのでしょうか。
      例えば、Wordpress Popular Postsとかだと、アクセスがある事に、アクセス数をカウントアップしてデータベースに保存しています。
      こんな感じでCFilteringもアクセスごとに、データベースに書き込みを行っているのかなと思ったもので。

      というのも、以前僕の本サイトの方で、(1回だけの)一時的なテレビ由来のアクセスのせいで、CPU負荷によるアクセス制限を受けたことがありまして、そのときに、毎回データベースに書き込むWordpress Popular Postsの使用は控えてといわれたもので。
      なので、一度CPUアクセス制限を受けたサイトでは(CPU負荷を減らすといった意味では)、使用を控えた方が良いのかなと思いまして。
      もちろん、(当サイトのような)通常のサイト運営ではものすごく有用なプラグインとして使わせていただいています。

    • #45653
      technote
      ゲスト

      記事へのアクセス時にユーザーのアクセス履歴をDBに追加するという認識でほぼあっています。
      実際にはアクセスしたページからAjaxでアクセス情報を送信します(apis/access.php)
      これはWPPとほぼ同じような動作です。
      これによってページキャッシュを行っているサイトでも使用できるようになります。
      またDBへの追加時の負荷はほぼWPPと同じです。
      一方でCFilteringはJaccard係数を計算する必要があり、アクセスとは別におよそ10分ごとにwp-cronでバックグラウンドで計算を行います。
      また一方でCFilteringではサンプリングレートの設定をすることができ、DBへの追加処理を1/10などに設定することができます。
      デフォルトではJaccard係数の計算時に時間がかかりすぎる場合、もしくはデータが多すぎる場合に自動で調整を行うようにしてあります。

      > なので、一度CPUアクセス制限を受けたサイトでは(CPU負荷を減らすといった意味では)、使用を控えた方が良いのかなと思いまして。

      アクセス時の負荷はほぼ同じなので、WPPも止めたほうがよいくらいのアクセスがある場合は使用を控えたほうがよいと考えます。

    • #45654
      technote
      ゲスト

      > 一方でCFilteringではサンプリングレートの設定をすることができ、DBへの追加処理を1/10などに設定することができます。

      WPPの設定を見たところ、WPPでも可能でした。

      またWPPは表示するためにクエリを発行していますが、これもキャッシュ可能でした。
      CFilteringはすでにランキングデータになっている計算結果がpostmetaに入っているため、ランキングデータ取得時にクエリの発行はしていません。

    • #45656
      アバター画像わいひら
      キーマスター

      詳しい解説をありがとうございます!
      なるほど。そんな仕組みになっていたんですね。
      けれども、僕の想像していたものよりも最大限負荷軽減されるような仕組みになっているんですね。

      アクセス時の負荷はほぼ同じなので、WPPも止めたほうがよいくらいのアクセスがある場合は使用を控えたほうがよいと考えます。

      本サイトの方でも、CFilteringを使用したくてうずうずしていたのですが、WPPと同様に控えたいと思います。ほんの数時間だけのトラフィック増加が憎い^^;
      Xサーバーいわく、一度でも制限を受けた場合は、今後同様の事が起きても問題がないように、対策した状態を維持せよとのことなので(サーバーとしては当然の対処ですが)。

      またWPPは表示するためにクエリを発行していますが、これもキャッシュ可能でした。

      これは知りませんでした。
      いいことを知りました。いろいろと教えていただき、ありがとうございます!

    • #45665
      technote
      ゲスト

      残念ですが仕方ないですね。

      迅速な対応ありがとうございました。
      今後ともよろしくお願い致します。

9件の返信スレッドを表示中
  • トピック「最新版にてPHP Parse error」には新しい返信をつけることはできません。
スポンサーリンク
アドセンス(大)
アドセンス(大)