« 「User Local スマートフォン解析」は、「うごくひと2」の進化系解析サイト、スマートフォン対応だけでなくリアルタイム検索などの機能もあっておもしろい! | メイン | 「金沢三十三観音霊場巡り」の旅、最終章は野町界隈と医王山編、そしてGoogleマップ・Picasaアルバムも完成しました »

TOP> MTのプラグイン活用

MT4のエントリー数のループ限界値「MTEntries」の続報・MT4のエラーメッセージ:「Can't call method "execute" on an undefined value ・・・」の対策の一案その2

MT4.22のエラーメッセージ

ブログ記事が2,000件を越えたため、再びMTでエラーが発生。

過去記事で、MT4の記事数が1000件を越えた場合のエラーの対処法についての回避策を書いた。

参考「MT4のエラーメッセージ:「Can't call method "execute" on an undefined value ・・・」の対策の一案

1000件の記事を出力すると表題にあるように、
「Can't call method "execute" on an undefined value ・・・」のエラーが出力される。

具体的には、下記コードで

<MTEntries lastn="xxxx">

</MTEntries>

lastnの数字(xxxx)が、1000以上で記事数が1000件以上ある場合である。

言い換えるとlastnが1000以上でも、記事数が1000件以上ない場合はエラーが発生しない。

今回、ブログ記事が2,000件になって新たにわかったことと回避した方法である。

・MTEntriesのループ回数はどうやら999回が限界値、上限値であること。

・回避策として、分割してループ処理を行う、そのためにはoffsetとlastnの組み合わせによる回避を行う。

<MTEntries lastn="999">
・・・
・・・
</MTEntries>

<MTEntries offset="999" lastn="999">
・・・
・・・
</MTEntries>

<MTEntries offset="1998" lastn="999">
・・・
・・・
</MTEntries>

最大999単位で出力する。

次の3000件(正確には2998)達成になったら、ループを一つ追加する。

もう少しすっきりした方法もあるであろうが、今回はサイトマップ(xml)への対応のみであること、
MTのバージョンによるバグ?であるのか、サーバ依存によるものであるのか、原因が特定できないのであまり追求しないこととする。

といいつつも、かなり調査したところ、MTデータベースの各テーブルの上限サイズ(文字数)などの情報はあるが、その他の設定値に関してはわからないのが実情である。

MT5系での不具合情報は見つからなかったので、MTバージョンでのエラーかも。

そもそも1000件以上を1ページに表示するということは、通常はあまり発生しない。
基本的に不具合発生のケースも少ないということだろう。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)