<?xml version="1.0" encoding="UTF-8"?>    <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
      <channel>
        <title>CMSB v3.76 Beta Released (Performance Optimizations)</title>
        <link>https://interactivetools.com/forum/forum-posts.php?CMSB-v3_76-Beta-Released-Performance-Optimizations-83002</link>
        <description></description>
        <pubDate>Mon, 17 Aug 2026 13:02:37 -0700</pubDate>
        <language>en-us</language>
        <atom:link href="https://interactivetools.com/forum/forum-posts.php?rss=1&amp;CMSB-v3_76-Beta-Released-Performance-Optimizations-83002" rel="self" type="application/rss+xml" />

                <item>
          <title>CMSB v3.76 Beta Released (Performance Optimizations)</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2247915#post2247915</link>
          <description><![CDATA[<p>Hi All, </p>
<p>We've released 3.76 here: <br /><a href="https://interactivetools.com/forum/forum-posts.php?CMSB-v3.76-Released---Performance-Optimizations-83007" rel="nofollow">https://interactivetools.com/forum/forum-posts.php?CMSB-v3.76-Released---Performance-Optimizations-83007</a></p>
<p>Thanks all for your help testing!</p>]]></description>
          <pubDate>Fri, 02 May 2025 22:10:23 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2247915#post2247915</guid>
        </item>
                <item>
          <title>CMSB v3.76 Beta Released (Performance Optimizations)</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2247911#post2247911</link>
          <description><![CDATA[<p>Hi Jeff, </p>
<p>Thanks for checking in, hopefully this week!</p>]]></description>
          <pubDate>Tue, 29 Apr 2025 10:03:39 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2247911#post2247911</guid>
        </item>
                <item>
          <title>CMSB v3.76 Beta Released (Performance Optimizations)</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2247908#post2247908</link>
          <description><![CDATA[<p>any word on the final release date?</p>]]></description>
          <pubDate>Thu, 24 Apr 2025 07:48:10 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2247908#post2247908</guid>
        </item>
                <item>
          <title>CMSB v3.76 Beta Released (Performance Optimizations)</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2247902#post2247902</link>
          <description><![CDATA[<p>Hi Jeff, </p>
<p>Thanks!  I fixed the date and we added some logging so if createMissingSchemaTablesAndFields() is called on the frontend by a plugin it will create a developer log entry: </p>
<blockquote>
<p><span>#1531 - Notice: Database schema sync called on frontend. This performance-heavy operation should only occur during plugin installation/upgrades. Update plugins if happening frequently.</span><br /><span>/var/www/html/cmsb/plugins/websiteMembership/websiteMembership.php on line 307</span></p>
</blockquote>
<p>This should get triggered by plugins that are incorrectly trying to update the schemas every page load (or using hardcoded references to .ini.php).  The quickest fix is to replace .ini.php with .schema.php in any plugins with issues.</p>
<p>And we've got some plugin updates in the works, but feel free to post any common ones.</p>]]></description>
          <pubDate>Wed, 19 Mar 2025 12:38:28 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2247902#post2247902</guid>
        </item>
                <item>
          <title>CMSB v3.76 Beta Released (Performance Optimizations)</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2247901#post2247901</link>
          <description><![CDATA[<p>Your title for the release is off a bit, showing April 18 instead of March.</p>
<p>Several of the plugins need to be updated as they reference .ini.php.</p>]]></description>
          <pubDate>Wed, 19 Mar 2025 09:53:12 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2247901#post2247901</guid>
        </item>
                <item>
          <title>CMSB v3.76 Beta Released (Performance Optimizations)</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2247900#post2247900</link>
          <description><![CDATA[<p>Hi All, </p>
<p>We've released (and we're running) v.3.76 RC1.  If no other issues arise in the next few days, this will become the official release.</p>
<p>Here's the download link: <a href="https://interactivetools.com/download/" rel="nofollow">https://interactivetools.com/download/</a></p>
<p>This version includes all the fixes to date.</p>]]></description>
          <pubDate>Tue, 18 Mar 2025 12:54:39 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2247900#post2247900</guid>
        </item>
                <item>
          <title>CMSB v3.76 Beta Released (Performance Optimizations)</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2247899#post2247899</link>
          <description><![CDATA[<p>How do you update the menuHidden value?  With saveSchema()?  If so, it will update the menu order cache automatically.  And you can load it with: Itools\Cmsb\SchemaMenuOrder::loadMenuCache()<br /><br />Note that undocumented internals might sometimes change, but usually quite infrequently.</p>]]></description>
          <pubDate>Fri, 14 Mar 2025 15:38:24 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2247899#post2247899</guid>
        </item>
                <item>
          <title>CMSB v3.76 Beta Released (Performance Optimizations)</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2247898#post2247898</link>
          <description><![CDATA[<p>I just realized that everything I need for the plugin is now in __menu_order.php, and I don't need the schema. That said, I will be changing the menuHidden flag in some cases. My app is organized by packages that map to one or more tables. If a package is enabled, the menuHidden is set to 0 (now it would be removed); if not, it is set to 1. These packages can be enabled or disabled anytime.</p>
<p>The Class SchemaMenuOrder shows that the file is cached, so updating it might not be the best practice. Should I save the file and then call SchemaMenuOrder::refreshCache() OR is there a better way?</p>]]></description>
          <pubDate>Fri, 14 Mar 2025 15:23:46 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2247898#post2247898</guid>
        </item>
                <item>
          <title>CMSB v3.76 Beta Released (Performance Optimizations)</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2247897#post2247897</link>
          <description><![CDATA[<p>I'd say stick with $schema = loadSchema('myTable'); and get everything from there since that's the definitive source.</p>]]></description>
          <pubDate>Fri, 14 Mar 2025 14:51:27 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2247897#post2247897</guid>
        </item>
                <item>
          <title>CMSB v3.76 Beta Released (Performance Optimizations)</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2247896#post2247896</link>
          <description><![CDATA[<p>What would you suggest to get the schema for myTable i.e. loadSchema('myTable') and the menuHidden from __menu_order.php?  I see several ways this could be done, but what would be the best approach?</p>]]></description>
          <pubDate>Fri, 14 Mar 2025 14:44:02 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2247896#post2247896</guid>
        </item>
                <item>
          <title>CMSB v3.76 Beta Released (Performance Optimizations)</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2247895#post2247895</link>
          <description><![CDATA[<p>Hi Jeff, </p>
<p>The menu order functionality in the schema system works as follows:</p>
<ul>
<li>loadSchema() doesn't include or load the __menu_order.php fields</li>
<li>Your plugins that detect 'menuType' should continue to work as is</li>
<li>Your plugins that check for 'menuHidden' might need some fallback code as we only save that if it's set.  e.g., if (!empty($schema['menuHidden'])) { // won't error if it's undefined</li>
<li>While loadSchema() doesn't call or load that file, saveSchema() ensures SchemaMenuOrder::refreshCache() is called which regenerates __menu_order.php with any updates.</li>
<li>The __menu_order.php file is only used to generate the CMS menu and store the menu sort order</li>
</ul>
<p>The main changes to be aware of:</p>
<ol>
<li>The system no longer saves blank value or default fields in schema files, making schemas much smaller</li>
<li>When checking fields, you might need to provide fallback values: $schema['city']['fieldPrefix'] ?? ''</li>
<li>Menu order is now stored in __menu_order rather than in the schema files</li>
<li>Field order is now determined by schema file order rather than $fieldSchema['order'] fields</li>
</ol>
<p>For the non-numeric value issue, I added a type cast "(int)" to force it to be an integer if that comes up for anyone in future: </p>
<pre class="language-php"><code>function loginExpirySeconds(): int {
    // get session expiry in seconds
    $limit      = (int) settings('advanced.login_expiry_limit');</code></pre>
<p class="whitespace-pre-wrap break-words">This will prevent similar problems in the future by forcing the value to be an integer if it happens for anyone else in future.</p>
<p class="whitespace-pre-wrap break-words">Great feedback and questions.  Let me know if you encounter any other issues!</p>]]></description>
          <pubDate>Fri, 14 Mar 2025 14:33:04 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2247895#post2247895</guid>
        </item>
                <item>
          <title>CMSB v3.76 Beta Released (Performance Optimizations)</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2247894#post2247894</link>
          <description><![CDATA[<p>QUESTION: Does loadSchema include the '__menu_order.php' fields? I have plugins that detect 'menuHidden' =&gt; 1, as well as 'menuType'. Just wondering if I need to deal with this myself when I update my plugin.</p>]]></description>
          <pubDate>Fri, 14 Mar 2025 08:30:46 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2247894#post2247894</guid>
        </item>
                <item>
          <title>CMSB v3.76 Beta Released (Performance Optimizations)</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2247893#post2247893</link>
          <description><![CDATA[<p>My original problem with slow loading was traced to a data entry error in the Security settings login timeout.</p>
<pre class="language-markup"><code>#24 - Warning: A non-numeric value encountered
/Volumes/J/test/html/www/cmsb/lib/login_functions.php on line 21
<a href="https://test.yaa.test/cmsb/admin.php?menu=admin&amp;action=security" rel="nofollow">https://test.yaa.test/cmsb/admin.php?menu=admin&amp;action=security</a></code></pre>
<p>I unintentionally had an extraneous character in the 'advanced'.'login_expiry_limit' =&gt; '30`', when I removed the extra tick, speeds were back to normal. It appears that the entry was not validated as a number.</p>]]></description>
          <pubDate>Fri, 14 Mar 2025 08:09:36 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2247893#post2247893</guid>
        </item>
                <item>
          <title>CMSB v3.76 Beta Released (Performance Optimizations)</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2247892#post2247892</link>
          <description><![CDATA[<p>Hi All, </p>
<p>Thanks for all the quick feedback via forum and email.  We've released beta 2 here: <br /><a href="https://interactivetools.com/download/" rel="nofollow">https://interactivetools.com/download/</a><br /><br />We've also released an updated Permalinks plugin that is optimized for this new version (click download beta here): <br /><a href="https://interactivetools.com/plugins/permalinks/" rel="nofollow">https://interactivetools.com/plugins/permalinks/</a></p>
<p>Feel free to give it a try or read on for technical details... </p>
<p>We've added a notice (visible to admins only) "Checking for database schema updates..." at the top of: CMS Setup &gt; Database.  This is the program checking the schema files and making any needed MySQL updates.  We've previously automatically done this on the login screen, database menu, and when called by plugins that are updating files, but we're making it more obvious for admins.  </p>
<p>Also, when plugins add schemas it will display (for admins): Checking for database schema updates... (initiated by plugin_name.php:123). So, if you're seeing that more than once, you can check that plugin and line number to ensure the plugin isn't running unneeded database updates.  Some plugins (ours included) were running their setup code more frequently than they needed to.</p>
<p>We've also added a new plugin hook, "<span>plugin_menu_init" to make it easy to run setup code on the plugin menu.  You can see some sample code from the latest permlinks here, which double-checks its setup on the plugin menu and when it's activated.  </span></p>
<pre class="language-php"><code>// on plugin active, or plugin menu - ensure schema is created
addAction('plugin_activate', 'permalink_cms_onInstallCreateSchemas',  null, 1);
addAction('plugin_menu_init', 'permalink_cms_onInstallCreateSchemas',  null, 0);</code></pre>
<p>Give it a try and let me know any questions or bugs you find!  Also, remember to check the before/after times on the homepage if you can and let us know!</p>
<p>Thanks!</p>]]></description>
          <pubDate>Thu, 13 Mar 2025 17:05:56 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2247892#post2247892</guid>
        </item>
                <item>
          <title>CMSB v3.76 Beta Released (Performance Optimizations)</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2247891#post2247891</link>
          <description><![CDATA[<p>Okay, great, thanks for checking.  We'll work on a fix for the plugins issue.</p>]]></description>
          <pubDate>Wed, 12 Mar 2025 11:49:27 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2247891#post2247891</guid>
        </item>
                <item>
          <title>CMSB v3.76 Beta Released (Performance Optimizations)</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2247890#post2247890</link>
          <description><![CDATA[<p>You are correct; it is the plugins. I deleted them all; now it is only .01 seconds, as predicted.</p>]]></description>
          <pubDate>Wed, 12 Mar 2025 11:47:05 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2247890#post2247890</guid>
        </item>
                <item>
          <title>CMSB v3.76 Beta Released (Performance Optimizations)</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2247889#post2247889</link>
          <description><![CDATA[<p>Hi Jeff, </p>
<p>Thanks for the feedback; it's very useful.</p>
<p>We're looking into some issues where existing plugins might be causing some all the schema files to be re-checked and re-generated on each page view, which is slow.    I'll post here as soon as we have a fix.</p>
<p>If possible, can you try temporarily disabling all the plugins and see if it's still slow? </p>]]></description>
          <pubDate>Wed, 12 Mar 2025 11:44:25 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2247889#post2247889</guid>
        </item>
                <item>
          <title>CMSB v3.76 Beta Released (Performance Optimizations)</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2247888#post2247888</link>
          <description><![CDATA[<p>I just ran a test and updated an existing test project, which went from 0.12 seconds on the welcome screen to 13.05 seconds. This is very slow. Every screen change now takes 13 seconds to load.</p>
<p>Although the ini files were converted to schema.php, the old infiles were not deleted. I manually deleted the ini files, but it did not impact the time.</p>
<p>No entries in the developer log to help troubleshoot.</p>
<p>I did find one thing, though. There were old sample data files in the schema directory that I manually deleted, which took 3 seconds off the load time. They existed in the old data/schema directory, which only took .12 seconds to load.</p>
<p>Browser Dev Tools does not show anything useful</p>]]></description>
          <pubDate>Wed, 12 Mar 2025 11:39:10 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2247888#post2247888</guid>
        </item>
                <item>
          <title>CMSB v3.76 Beta Released (Performance Optimizations)</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2247885#post2247885</link>
          <description><![CDATA[<p class="whitespace-pre-wrap break-words">Hi everyone,</p>
<p class="whitespace-pre-wrap break-words">We're excited to announce the beta release of version 3.76! We're already running this version on interactivetools.com and have implemented significant performance enhancements across the board. Every aspect of the codebase has been optimized for speed.</p>
<p><strong>What's New</strong></p>
<ul class="[&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-disc space-y-1.5 pl-7">
<li class="whitespace-normal break-words"><strong>Performance Updates:</strong> The core CMS system now loads in less than 0.01 seconds - literally faster than a blink of an eye!</li>
<li class="whitespace-normal break-words"><strong>Schema File Changes:</strong> Schema files are now stored as <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.3rem] px-1 py-px text-[0.9rem]">*.schema.php</code> instead of <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.3rem] px-1 py-px text-[0.9rem]">*.ini.php</code> and contain only essential information for faster loading and easier manual editing</li>
<li class="whitespace-normal break-words"><strong>Menu Order:</strong> Menu order data is now centralized in <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.3rem] px-1 py-px text-[0.9rem]">/data/schema/__menu_order.php</code>, eliminating the need to update ALL schema files when changing menu order (great news for Git/source control users)</li>
<li class="whitespace-normal break-words"><strong>Field Order:</strong> Within schemas, field order is now inferred by file order, making it simpler to rearrange fields through copy/paste when needed</li>
</ul>
<p><strong>Before You Upgrade</strong></p>
<p class="whitespace-pre-wrap break-words">To appreciate the performance improvements, try this quick test:</p>
<ol class="[&amp;:not(:last-child)_ul]:pb-1 [&amp;:not(:last-child)_ol]:pb-1 list-decimal space-y-1.5 pl-7">
<li class="whitespace-normal break-words">Before upgrading, reload the CMS Welcome screen a few times (click on the top-left program name)</li>
<li class="whitespace-normal break-words">Note the average seconds displayed at the bottom of the page</li>
<li class="whitespace-normal break-words">Upgrade to 3.76</li>
<li class="whitespace-normal break-words">Perform the same action and compare the results and let us know</li>
</ol>
<p class="whitespace-pre-wrap break-words">Performance varies by server configuration, but load time decreased from 0.50 seconds to 0.01 seconds on one of our development servers.</p>
<p>The full changelog for this release is as follows:</p>
<blockquote>
<pre>*** March 11, 2025 - Version 3.76 (Performance Optimizations)<br /><br />SERVER REQUIREMENTS (Since Dec 2023): PHP 8.0+ and MySQL 5.7+ (or MariaDB 10.2+)<br /><br />PERFORMANCE OPTIMIZATIONS<br />- CMS Speed: Core CMS system loads in less than 1/100th of a second (faster than you can blink!)<br />- CMS Fonts: Removed old font formats and switched to faster modern ones<br />- Schema Files: Now load faster and formatted for easier editing (field order is now implicit for cleaner diffs)<br />- Plugin Hooks: Unused plugin hooks are skipped to save time<br />- Menu Caching: Menu data is now cached and updated on database changes instead of being rebuilt on each page load<br />- Database Indexes: Added indexes for dragSortOrder and commonly referenced fields<br />- Internal Caching: Frequently called functions now cache their results instead of recalculating them<br />- Autoload Speed: Optimized autoloader and manually loading essential files for faster startup<br /><br />BACKWARDS INCOMPATIBLE CHANGES<br />- Old .ini.php schema files are automatically converted to .schema.php; if you rely on direct reads/writes of `.ini.php`<br />  please update your code. Internal CMS functions automatically adapt to the new format.<br />- Plugin /language/ folders are no longer supported, use main language file for translations instead (much faster)<br /><br />FOR PROGRAMMERS<br />- Settings _dotEnvPath key introduced for optionally storing DB and Mail credentials in .env.php file outside of web root<br />- Upgraded Dependencies: Guzzle, PHPMailer, Firebase/JWT, OAuth2 libraries, etc. to latest versions<br />- SmartArray: Additional methods (getRawValue, contains, each, smartMap, or404, orDie, orThrow) and reorganized defaults<br />- SmartString: Additional methods (getRawValue, rawHtml, or404, orDie, orThrow, andPrefix) and reorganized defaults<br />- ZenDB: Additional methods: DB::likeContains(), likeContainsTSV(), likeStartsWith(), likeEndsWith() for simplified SQL pattern searches<br />- CMS: Added CMS::log($message) function for logging messages to the developer log - also accepts arrays and objects<br />- Some older method aliases are deprecated with fallback calls<br /><br />BUG FIXES<br />- Uploads: Fixed issue where multiple new uploads with info fields only showed edit form for the first upload<br />- Misc code and other minor improvements</pre>
</blockquote>
<p>You can download the latest beta <a>here:https://www.interactivetools.com/download/</a></p>
<p>Please post (or email) any feedback, questions, concerns, or bugs you find.   Your help with beta testing allows us to release new features even faster.</p>
<p><span>Thanks. We look forward to your feedback! :)</span></p>]]></description>
          <pubDate>Tue, 11 Mar 2025 13:54:03 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2247885#post2247885</guid>
        </item>
              </channel>
    </rss>
  