musicmaster Posted February 23, 2023 Posted February 23, 2023 What is the function of the triggercontroller? When I load a product page I see that a call is made to index.php?controller=trigger&ts=1677152722 What is returned is {"status":"failed","error":"Forbidden"} When I look into the source code I see something about a scheduler but that doesn't make things much clearer. The line "ServiceLocator::getInstance()->getScheduler();" gives me nightmares about Symfony style complexity.
datakick Posted February 23, 2023 Posted February 23, 2023 10 minutes ago, musicmaster said: What is the function of the triggercontroller? When I load a product page I see that a call is made to index.php?controller=trigger&ts=1677152722 What is returned is {"status":"failed","error":"Forbidden"} It's a synthetic event to trigger scheduler. To run scheduled and deferred tasks. In ideal deployment, this would not be needed, because scheduler events would be triggered by cron or external process. That's not realistic for small shops, so it's emulated using this synthetic events. 10 minutes ago, musicmaster said: When I look into the source code I see something about a scheduler but that doesn't make things much clearer. The line "ServiceLocator::getInstance()->getScheduler();" gives me nightmares about Symfony style complexity. Tell me you have never wrote a test without telling me you have never wrote a test.
musicmaster Posted February 23, 2023 Author Posted February 23, 2023 43 minutes ago, datakick said: It's a synthetic event to trigger scheduler. To run scheduled and deferred tasks. But what does that "failed"/"forbidden" reaction that I see mean for the functioning of my webshop?
datakick Posted February 23, 2023 Posted February 23, 2023 What tb version are you using? In 1.3, this issue was caused by CORS preflight requests. Not a critical issue, because trigger was executed during preflight request. Fixed anyway.
datakick Posted February 23, 2023 Posted February 23, 2023 Let's blame it on CORS then 🙂 If you are unable to update to 1.4, you can applie these lines (warning PHP7 syntax used - I know you are working on some PHP5.6 servers, for some reason) https://github.com/thirtybees/thirtybees/blob/81dd5d911a086164146bafc3bf650694786d9a56/controllers/front/TriggerController.php#L38-L44 1
Scully Posted March 31, 2025 Posted March 31, 2025 I want to bring this question up again. I recently migrated to TB 1.6. POST /index.php?controller=trigger&ts=XXX is the only request on our shop front end, where a file with .php file extension is directly executed. This causes issues with our security engine, which does not allow to directly call a .php - file. Question: Would it be possible to execute the trigger from server side directly via cron? If so, what would be the URI to call?
datakick Posted March 31, 2025 Posted March 31, 2025 33 minutes ago, Scully said: Would it be possible to execute the trigger from server side directly via cron? With some custom modifications/overrides it's possible. Easier solution is to go to Preferences > SEO & URLs , click on Add new Page, and define friendly url for this controller. With this in place, your store will use friendly url for this controller instead of direct php call:
Scully Posted April 1, 2025 Posted April 1, 2025 Thank you @datakick I'll go for your solution and will give it a try. Thank you.
DRMasterChief Posted Tuesday at 05:09 PM Posted Tuesday at 05:09 PM ...once again, how to fix this with PHP 8.1 ? Please help @datakick Is that simply sufficient? in /controllers/front/TriggerController.php // BEFORE: trigger_error("Attempt to update unsaved object", 512); // AFTER: @trigger_error("Attempt to update unsaved object", 512);
datakick Posted Wednesday at 05:28 AM Posted Wednesday at 05:28 AM 12 hours ago, DRMasterChief said: ...once again, how to fix this with PHP 8.1 ? Please help @datakick Is that simply sufficient? in /controllers/front/TriggerController.php // BEFORE: trigger_error("Attempt to update unsaved object", 512); // AFTER: @trigger_error("Attempt to update unsaved object", 512); I'm not sure what is the question. There is no trigger_error(...) in TriggerController.
DRMasterChief Posted Wednesday at 02:46 PM Posted Wednesday at 02:46 PM (edited) But you get this error with 'php collect module' very often in error logs: This occurs after an admin login and logout, when an item is subsequently searched for in the front office (at least, that is how I was able to reproduce the error). Stacktrace #0 builtin #1 classes/ObjectModel.php(752): trigger_error("Attempt to update unsaved object", 512) #2 classes/Cart.php(2809): ObjectModelCore->update(false) #3 classes/controller/FrontController.php(1437): CartCore->update() #4 classes/controller/Controller.php(192): FrontControllerCore->init() #5 classes/controller/FrontController.php(264): ControllerCore->run() #6 classes/Dispatcher.php(858): FrontControllerCore->run() #7 index.php(33): DispatcherCore->dispatch() HTTP Request POST /de/index.php?controller=trigger&ts=1772887354 Edited Wednesday at 02:47 PM by DRMasterChief
the.rampage.rado Posted Wednesday at 10:03 PM Posted Wednesday at 10:03 PM This issue is caused by bots that try to delete already empty cart they create I think.
datakick Posted yesterday at 06:33 AM Posted yesterday at 06:33 AM This Attempt to update unsaved object warning message exists to alert developers to a code that do something they probably do not expect. In this case, FrontController is trying to update Cart object and set language/currency. But because the cart does not exists, that update is silently ignored - nothing is actually saved/updated into database. This is obviously strange situation that needs to be investigated and fixed. In this case, we should can simply add a check that cart exists before we try to do any of this stuff. In a lot of other cases, the fix may be much more complicated.
datakick Posted yesterday at 06:49 AM Posted yesterday at 06:49 AM Fixed in commit https://github.com/thirtybees/thirtybees/commit/7e9f2db06acd8323d4cefef0bb44654b87e6f0ca
DRMasterChief Posted 11 hours ago Posted 11 hours ago i now have installed this fix and have an eye on this 🙂 thank you for fast response! btw. do you need more details about this error in my shop?
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now