To make a similar function:
For example, set a date on the 20th of every month, and remind the user to give gifts a few days before this date.
The date can be set to the day of the month, the day of the month, etc. Can the reminder time be a reminder for the current day, a reminder for the previous week, etc.?
How to design the backend database with this kind of function? How many tables are needed? Now that the message push function is available, how to detect when it will be pushed? Write a scheduled task in the background to run continuously?
Reply content:
To make a similar function:
For example, set a date on the 20th of every month, and remind the user to give gifts a few days before this date.
The date can be set to the day of the month, the day of the month, etc. Can the reminder time be a reminder for the current day, a reminder for the previous week, etc.?
How to design the backend database for this kind of function? How many tables are needed? Now that the message push function is available, how to detect when it will be pushed? Write a scheduled task in the background to run continuously?
Two scheduled tasks, three tables
1. Gift table, which contains fields for when to send and whether to send. 2. Message table, whether to send, what is sent, and to whom
3. Message person table, each Extract personal messages
Task one, scan the task table, if it has not been sent and the time is up, insert a piece of data into the message table
Task two, scan the message table, if there is a message, send it according to the system,,,,, he is a A public watch is not necessarily used for giving out gifts
It is necessary to judge the application environment, during web access, and when users access it.
Several tables are needed to see your specific business needs. One information table with uncomplicated business needs is enough. If you set up timing, you definitely need to set up a script. Or you can use a third party to push Jiguang Push
Data Dictionary
1 The user information table uses the field is_accept to store whether the user has enabled message prompts
id primary key
task_obj extended field
title title
content content
on_time end time
status whether the platform enables message prompts
days reminder a few days in advance (this field can also be set for the user, user information exists Table, let the user decide when to prompt him)
tips how many times to push
interval_time push interval (how often does the same user push)
3 message push log table
id primary key id
uid user id
tid message configuration id
on_time send Push time
//Get all users whose user table is_accept is 1 loop
<code> foreach{ //获取推送配置信息表 //判断用户是否已推送, //判断 当前时间-用户上次推送时间>=配置间隔时间 //判断是否已达到最大推送次数 //写入推送记录表 }</code>5 Implementation
If it is a Linux system, it is recommended to use the system command curl
For a Windows system, it is recommended to write the process daemon yourself, or use urlcron

APHPDependencyInjectionContainerisatoolthatmanagesclassdependencies,enhancingcodemodularity,testability,andmaintainability.Itactsasacentralhubforcreatingandinjectingdependencies,thusreducingtightcouplingandeasingunittesting.

Select DependencyInjection (DI) for large applications, ServiceLocator is suitable for small projects or prototypes. 1) DI improves the testability and modularity of the code through constructor injection. 2) ServiceLocator obtains services through center registration, which is convenient but may lead to an increase in code coupling.

PHPapplicationscanbeoptimizedforspeedandefficiencyby:1)enablingopcacheinphp.ini,2)usingpreparedstatementswithPDOfordatabasequeries,3)replacingloopswitharray_filterandarray_mapfordataprocessing,4)configuringNginxasareverseproxy,5)implementingcachingwi

PHPemailvalidationinvolvesthreesteps:1)Formatvalidationusingregularexpressionstochecktheemailformat;2)DNSvalidationtoensurethedomainhasavalidMXrecord;3)SMTPvalidation,themostthoroughmethod,whichchecksifthemailboxexistsbyconnectingtotheSMTPserver.Impl

TomakePHPapplicationsfaster,followthesesteps:1)UseOpcodeCachinglikeOPcachetostoreprecompiledscriptbytecode.2)MinimizeDatabaseQueriesbyusingquerycachingandefficientindexing.3)LeveragePHP7 Featuresforbettercodeefficiency.4)ImplementCachingStrategiessuc

ToimprovePHPapplicationspeed,followthesesteps:1)EnableopcodecachingwithAPCutoreducescriptexecutiontime.2)ImplementdatabasequerycachingusingPDOtominimizedatabasehits.3)UseHTTP/2tomultiplexrequestsandreduceconnectionoverhead.4)Limitsessionusagebyclosin

Dependency injection (DI) significantly improves the testability of PHP code by explicitly transitive dependencies. 1) DI decoupling classes and specific implementations make testing and maintenance more flexible. 2) Among the three types, the constructor injects explicit expression dependencies to keep the state consistent. 3) Use DI containers to manage complex dependencies to improve code quality and development efficiency.

DatabasequeryoptimizationinPHPinvolvesseveralstrategiestoenhanceperformance.1)Selectonlynecessarycolumnstoreducedatatransfer.2)Useindexingtospeedupdataretrieval.3)Implementquerycachingtostoreresultsoffrequentqueries.4)Utilizepreparedstatementsforeffi


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Dreamweaver Mac version
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

EditPlus Chinese cracked version
Small size, syntax highlighting, does not support code prompt function

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.
