1.0.6J-r1で公開時間指定が上手く機能しない  【解決済み】

質問全般・改善要望
返信する
shobu
メンバー
メンバー
記事: 91
登録日時: 2011年5月26日(木) 16:54

1.0.6J-r1で公開時間指定が上手く機能しない  【解決済み】

投稿記事 by shobu »

こんにちは。こちらにはご無沙汰です。

既存サイトのアップデート可否確認のために1.0.6J-r1で確認作業をしているのですが、公開時間指定が上手く動いていないことに気づきました。
CentOS5/6、別の環境で発生しています。まだ、コードを追っている途中なので根本原因は分かっていないのですが、 document.parser.class.inc.phpの1009行目辺りで sitePublishing.idx.php を include_once で読み込んでいるところに何かありそうです。

ここでの読み込みでは sitePublishing.idx.php 内の $cacheRefreshTime などの値を取得できていないようです。 include にしてあげるととりあえず値は読み込まれるようなのですが、一連の処理のどこか別の場所で sitePublishing.idx.php が読み込まれている(include_onceで読み込まれた変数はグローバルになるようなのでこれでも問題ないような気もしますが)為でしょうか。。。
なお、管理画面からキャッシュクリアするとその時点で公開になるようです。

別サーバのCentOS5上で動作している 1.0.5J-r1 ではこの件は問題ないようなので、とりあえずはRedHatのパッケージ側に何か不具合があるという理由ではなさそうです。
公式のでもサイトは1.0.6Jでしたが、こちらでも現象を確認できました。

お気づきの点があれが教えて頂けますと幸いです。
shobu
メンバー
メンバー
記事: 91
登録日時: 2011年5月26日(木) 16:54

Re: 1.0.6J-r1で公開時間指定が上手く機能しない

投稿記事 by shobu »

こんにちは。
前述の件、デモサイトでの挙動は気のせいでした。失礼しました。
r1との差分をチェックしていけば分かりますかね。。。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 1.0.6J-r1で公開時間指定が上手く機能しない

投稿記事 by yama »

ありがとうございます。index.phpの冒頭で読み込んでいるのが影響しているようです。すぐ修正します
shobu
メンバー
メンバー
記事: 91
登録日時: 2011年5月26日(木) 16:54

Re: 1.0.6J-r1で公開時間指定が上手く機能しない

投稿記事 by shobu »

素早いご連絡ありがとうございます。
1.0.6Jとのdocument.paserの差を追ったりして、行き詰まっていました。
1.0.6Jの挙動は大丈夫なようです。
よろしくお願いいたします。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 1.0.6J-r1で公開時間指定が上手く機能しない

投稿記事 by yama »

取り急ぎパッチを作りました。これを上書きして試していただけますでしょうか
添付ファイル
patch.zip
(30.95 KiB) ダウンロード数: 523 回
shobu
メンバー
メンバー
記事: 91
登録日時: 2011年5月26日(木) 16:54

Re: 1.0.6J-r1で公開時間指定が上手く機能しない

投稿記事 by shobu »

ありがとうございます。

置き換え後の結果ですが、

まず、時間設定をしてその時間になったときに一度だけMODXがparseエラーを吐きます。

PHP error debug
Error: file_put_contents(): Filename cannot be empty
Error type/ Nr.: Warning - 2
File: /var/www/xxx/manager/includes/document.parser.class.inc.php
Line: 1081
Line 1081 source: file_put_contents($cache_path, $content);

もう一度リロードすると期待通りの表示になります。今見たばかりなので、原因不明ですが $cache_path がNULLってことですかね?
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 1.0.6J-r1で公開時間指定が上手く機能しない

投稿記事 by yama »

なるほどです。もしできれば $cache_path= "{$this->config['base_path']}assets/cache/sitePublishing.idx.php"; の行を
if($this->cacheRefreshTime=='')の判定の外側(上の行)に移動していただけますでしょうか。
shobu
メンバー
メンバー
記事: 91
登録日時: 2011年5月26日(木) 16:54

Re: 1.0.6J-r1で公開時間指定が上手く機能しない

投稿記事 by shobu »

メッセージが行き違いになりました。ご連絡の方法でとりあえず解消です。別件があるかもしれないので、もう少し調べてみます。
-----------
連投スミマセン。
若干対処療法的ですが、1009行目辺りでifの中に入ってしまった

$cache_path= "{$this->config['base_path']}assets/cache/sitePublishing.idx.php";

をifの上にでも出してあげれば良いですかね。。。。とりあえずこれでこの件のエラーは片付きました。

別件かもしれませんが、1度目の表示エラーのタイミング(解決したときの1度目の表示)でdittoがtpl内のプレースフォルダーが全部空っぽだと出ることに気づきました。
hiddenFieldsで消えるものか、別の理由かはこれから確認してみます。
shobu
メンバー
メンバー
記事: 91
登録日時: 2011年5月26日(木) 16:54

Re: 1.0.6J-r1で公開時間指定が上手く機能しない

投稿記事 by shobu »

修正された1回目エラー表示と同じタイミングでDittoのtpl指定している箇所が全てで「&tpl 指定したDittoテンプレート(チャンク)にプレースホルダが含まれていません。上記のテンプレートの内容を確認してください。」と表示されるようになりました。

リロードすると何事もなかったかのように元に戻ります。hiddenFieldsは関係なさそうです。
tpl指定しない場合は問題ないようで、dittoデフォルトの表示がされます。

このテスト環境を1.0.6Jに移動させるのにはチョット時間がかかりそうなので後回しですが、どこかチェックすべき点はあるでしょうか?
どうもditto内での$templatesが上手くとれていないようにもみえるのですが、、、
shobu
メンバー
メンバー
記事: 91
登録日時: 2011年5月26日(木) 16:54

Re: 1.0.6J-r1で公開時間指定が上手く機能しない

投稿記事 by shobu »

こんにちは。

Dittoの template.class.inc.php の fetch関数内の $modx->getChunk で、公開日時設定でキャッシュステータスが変わったタイミングだと戻り値がないところまでは追いました。。。次の表示からは期待通りの値が戻ってきています。この辺の処理もキャッシュ機構の変更時に何か変わっているでしょうか。。。

アップデート諦める前にもうチョット追いたいと思います。何かお心当たりがあればご教授ください。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 1.0.6J-r1で公開時間指定が上手く機能しない

投稿記事 by yama »

了解です、こちらも後ほど修正します
shobu
メンバー
メンバー
記事: 91
登録日時: 2011年5月26日(木) 16:54

Re: 1.0.6J-r1で公開時間指定が上手く機能しない

投稿記事 by shobu »

こちらでこれ以上調べなくても、お任せしてしまって大丈夫と言うことでしょうか。。。

お手数おかけしますが、よろしくお願いいたします。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 1.0.6J-r1で公開時間指定が上手く機能しない

投稿記事 by yama »

コードを確認してみました。試してませんが、document.parser.inc.php内のunset($this->chunkCache);という記述は不要ですね。その直後にclearCache()を実行しますので。
試しにunset($this->chunkCache);を削除してみていただけますでしょうか。これで直る場合は、今度はclearCache()の処理のほうがすっきりしてない可能性が出てきますが・・
shobu
メンバー
メンバー
記事: 91
登録日時: 2011年5月26日(木) 16:54

Re: 1.0.6J-r1で公開時間指定が上手く機能しない

投稿記事 by shobu »

試しにunset($this->chunkCache);を削除してみていただけますでしょうか。これで直る場合は、今度はclearCache()の処理のほうがすっきりしてない可能性が出てきますが・・
残念ながら効果無しでした。
shobu
メンバー
メンバー
記事: 91
登録日時: 2011年5月26日(木) 16:54

Re: 1.0.6J-r1で公開時間指定が上手く機能しない

投稿記事 by shobu »

先ほどの件、こちらの勘違いです(キャッシュかな・・・)。
問題解消しました。
失礼しました。

この変更は別の所に副作用が出る可能性、またはclearCache()処理にまだ何か潜んでいる可能性はあるでしょうか。
根が深そうならば、とりあえず1.0.6Jで確認する方向に転換しようかと、、、
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 1.0.6J-r1で公開時間指定が上手く機能しない

投稿記事 by yama »

問題は2つあって、どちらも解決する必要があると思います。ひとつは、無条件にチャンクのキャッシュをunsetする必要がないということと、もうひとつはキャッシュをunsetしたあとに再生成してメモリに読み直す処理がたぶん抜けているという点です。すぐ解決できると思いますのでしばしお待ちを
shobu
メンバー
メンバー
記事: 91
登録日時: 2011年5月26日(木) 16:54

Re: 1.0.6J-r1で公開時間指定が上手く機能しない

投稿記事 by shobu »

了解しました。お手数おかけしますが、よろしくお願いいたします。

別トピにすべきでしょうが、documentparser中に memory_get_peak_usage があり、これはphp53がないと使えないため Fatal error になってしまいます。
手パッチしてたのですが、先ほどの修正をCentOS5環境に適用してエラーが復活して思い出しました。
念のため、ご報告まで。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 1.0.6J-r1で公開時間指定が上手く機能しない

投稿記事 by yama »

https://github.com/modxcms-jp/evolution ... 655a9e47a1
ありがとうございます。その件は上記で修正したので、次リリースに積み込み予定です。あとで作るパッチにいっしょに載せておきますね
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 1.0.6J-r1で公開時間指定が上手く機能しない

投稿記事 by yama »

修正しました。これを試していただけますでしょうか。メモリ関数の件とは違うファイルでしたが、それもついでにパッチを加えておきました
添付ファイル
patch.zip
(3.75 KiB) ダウンロード数: 480 回
mem.zip
(28.78 KiB) ダウンロード数: 494 回
shobu
メンバー
メンバー
記事: 91
登録日時: 2011年5月26日(木) 16:54

Re: 1.0.6J-r1で公開時間指定が上手く機能しない

投稿記事 by shobu »

ありがとうございました。
今回の件についてはこれで解消したようです。

このままテストを続けて何か気づいたことがあればご連絡するようにします。
返信する