<feed xmlns='http://www.w3.org/2005/Atom'>
<title>FreshRSS (Customized)/app/Models/DatabaseDAO.php, branch 1.28.0</title>
<subtitle>Customized version of FreshRSS, a self-hosted RSS feed aggregator</subtitle>
<id>https://git.rdnlsmith.com/fresh-rss-custom/atom?h=1.28.0</id>
<link rel='self' href='https://git.rdnlsmith.com/fresh-rss-custom/atom?h=1.28.0'/>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/'/>
<updated>2025-12-20T10:06:39+00:00</updated>
<entry>
<title>More uniform SQL search and PHP search (#8329)</title>
<updated>2025-12-20T10:06:39+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-12-20T10:06:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=af1e5cb9bc0c81e36a095b70073f0d23cf4554a9'/>
<id>urn:sha1:af1e5cb9bc0c81e36a095b70073f0d23cf4554a9</id>
<content type='text'>
* More uniform SQL search and PHP search
The behaviour depends though on the database.
Improve https://github.com/FreshRSS/FreshRSS/discussions/8265#discussioncomment-15278980

* Try to use transliterator_transliterate function instead
</content>
</entry>
<entry>
<title>Fix minor backslashes (#8292)</title>
<updated>2025-12-07T19:27:06+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-12-07T19:27:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=19975c22ecf7f94ee3c0ed10d19acee068ccc06b'/>
<id>urn:sha1:19975c22ecf7f94ee3c0ed10d19acee068ccc06b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Scaling of user statistics (#8277)</title>
<updated>2025-12-04T18:11:31+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-12-04T18:11:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=78e40c6fe3afe7f815ef9d32646610e2d5436ba3'/>
<id>urn:sha1:78e40c6fe3afe7f815ef9d32646610e2d5436ba3</id>
<content type='text'>
Fix https://github.com/FreshRSS/FreshRSS/issues/8268
To better support user management on FreshRSS instance with many users.

SQL speed improved. On a reduced test with 5 users, including some large accounts (PostgreSQL on a very tiny and slow server), improving from ~2.3s to ~1.8s, which gives ~20% speed improvement.

Then tested with 1000 users, with only the default feed (on my old desktop computer):

```sh
for i in {1..1000}; do ./cli/create-user.php --user=freshrss$i --password=freshrss; done
app/actualize_script.php
cli/access-permissions.sh
```

SQLite:

```console
$ time cli/user-info.php | wc -l
1001

real    0m1.366s
user    0m0.908s
sys     0m0.475s
```

PostgreSQL:

```console
$ time cli/user-info.php | wc -l
1001

real    0m28.498s
user    0m12.137s
sys     0m2.217s
```

MariaDB:

```console
# time ./cli/user-info.php | wc -l
1001

real    0m49.485s
user    0m1.276s
sys     0m2.258s
```

Yes, SQLite is much faster - not a surprise for such use-cases, where the TCP connection is not re-used.

I have added some CLI options to disable some statistics:

```sh
cli/user-info.php --no-db-size --no-db-counts
```

For the Web UI, I have disabled detailed user statistics if it takes too long, and retrieve missing user statistics asynchronously via JavaScript. Lazy loading of the user details based on IntersectionObserver, with maximum 10 requests in parallel.
Web UI tested on 1000 users as well. Checked with SeaMonkey.
</content>
</entry>
<entry>
<title>Fix MySQL / MariaDB database size calculation (#8282)</title>
<updated>2025-12-03T22:43:03+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-12-03T22:43:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=a50e9a98dbf90839e4889d12e08bed11b2e22453'/>
<id>urn:sha1:a50e9a98dbf90839e4889d12e08bed11b2e22453</id>
<content type='text'>
The `_` is a special character in the SQL `LIKE` expression and was not escaped, leading to users counting for other users size.
Stats for `freshrss` user included users `freshrss1` and `freshrss2` (but not vice versa).
Discovered during https://github.com/FreshRSS/FreshRSS/pull/8277
</content>
</entry>
<entry>
<title>Stable IDs during SQL import (#7988)</title>
<updated>2025-09-27T13:11:55+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-09-27T13:11:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=5e8c964f6cc735c49e686022700144307e903dd1'/>
<id>urn:sha1:5e8c964f6cc735c49e686022700144307e903dd1</id>
<content type='text'>
* Stable IDs during SQL import
Follow-up of https://github.com/FreshRSS/FreshRSS/pull/7949
Make sure that the original category IDs, feed IDs, and label IDs are kept identical during an SQL import.
Avoid breaking everything referring to categories, feeds, labels by their IDs such as searches and third-party extensions.

* Fix export of default category
</content>
</entry>
<entry>
<title>Recovery: skip broken entries during CLI export/import (#7949)</title>
<updated>2025-09-14T20:36:01+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-09-14T20:36:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=29446a29f58b484817e6c9798c736e5f531c21ee'/>
<id>urn:sha1:29446a29f58b484817e6c9798c736e5f531c21ee</id>
<content type='text'>
* Recovery: skip broken entries during CLI export/import
fix https://github.com/FreshRSS/FreshRSS/discussions/7927

```
25605/25605 (48 broken)
```

Help with *database malformed* or other corruption.

* Compatibility multiple databases</content>
</entry>
<entry>
<title>Change how files are included (#7916)</title>
<updated>2025-09-05T13:56:46+00:00</updated>
<author>
<name>Alexis Degrugillier</name>
<email>aledeg@users.noreply.github.com</email>
</author>
<published>2025-09-05T13:56:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=23ba48c71f0d41bbe012d668349f6516dad527b4'/>
<id>urn:sha1:23ba48c71f0d41bbe012d668349f6516dad527b4</id>
<content type='text'>
1. `include`, `include_once`, `require` and `require_once` are expressions not functions, parentheses are not necessary.
2. to move up the directory tree, it's better to use the `dirname` function instead of relying on `/..`.</content>
</entry>
<entry>
<title>Install: add test PDO typing (#7651)</title>
<updated>2025-06-06T07:56:27+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-06-06T07:56:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=f620f16e2b62cc12e8b2a155d8f764dd8bafefe8'/>
<id>urn:sha1:f620f16e2b62cc12e8b2a155d8f764dd8bafefe8</id>
<content type='text'>
fix https://github.com/FreshRSS/FreshRSS/issues/7647</content>
</entry>
<entry>
<title>Add info about PDO::ATTR_CLIENT_VERSION (#7591)</title>
<updated>2025-05-17T20:51:44+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-05-17T20:51:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=52848d414d63bbb57042741bd56d97a7fea06653'/>
<id>urn:sha1:52848d414d63bbb57042741bd56d97a7fea06653</id>
<content type='text'>
Help with https://github.com/FreshRSS/FreshRSS/issues/7586</content>
</entry>
<entry>
<title>Fix sqlite_version (#7205)</title>
<updated>2025-01-10T07:47:52+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-01-10T07:47:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=7a79717e102447f72f592fd48aa5d793bcdbf1c6'/>
<id>urn:sha1:7a79717e102447f72f592fd48aa5d793bcdbf1c6</id>
<content type='text'>
* Fix sqlite_version
for https://github.com/FreshRSS/FreshRSS/pull/7161

* Fix PostgreSQL</content>
</entry>
</feed>
