Compare commits
3 Commits
9b6cf0badd
...
main
Author | SHA1 | Date | |
---|---|---|---|
|
f64a9eadbe | ||
|
f30a8fe711 | ||
|
2238305d65 |
11
.idea/dataSources.local.xml
generated
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="dataSourceStorageLocal" created-in="PS-243.23654.168">
|
||||
<data-source name="students.sqlite" uuid="1a6627af-ec57-4782-8160-79144abe9af0">
|
||||
<database-info product="" version="" jdbc-version="" driver-name="" driver-version="" dbms="SQLITE" />
|
||||
<secret-storage>master_key</secret-storage>
|
||||
<auth-provider>no-auth</auth-provider>
|
||||
<schema-mapping />
|
||||
</data-source>
|
||||
</component>
|
||||
</project>
|
12
.idea/dataSources.xml
generated
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
|
||||
<data-source source="LOCAL" name="students.sqlite" uuid="1a6627af-ec57-4782-8160-79144abe9af0">
|
||||
<driver-ref>sqlite.xerial</driver-ref>
|
||||
<synchronize>true</synchronize>
|
||||
<jdbc-driver>org.sqlite.JDBC</jdbc-driver>
|
||||
<jdbc-url>jdbc:sqlite:$PROJECT_DIR$/ajax_workshop_2/students.sqlite</jdbc-url>
|
||||
<working-dir>$ProjectFileDir$</working-dir>
|
||||
</data-source>
|
||||
</component>
|
||||
</project>
|
1690
.idea/dataSources/1a6627af-ec57-4782-8160-79144abe9af0.xml
generated
Normal file
2
.idea/dataSources/1a6627af-ec57-4782-8160-79144abe9af0/storage_v2/_src_/schema/main.uQUzAA.meta
generated
Normal file
@@ -0,0 +1,2 @@
|
||||
#n:main
|
||||
!<md> [0, 0, null, null, -2147483648, -2147483648]
|
20
.idea/php.xml
generated
@@ -1,20 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="MessDetectorOptionsConfiguration">
|
||||
<option name="transferred" value="true" />
|
||||
</component>
|
||||
<component name="PHPCSFixerOptionsConfiguration">
|
||||
<option name="transferred" value="true" />
|
||||
</component>
|
||||
<component name="PHPCodeSnifferOptionsConfiguration">
|
||||
<option name="highlightLevel" value="WARNING" />
|
||||
<option name="transferred" value="true" />
|
||||
</component>
|
||||
<component name="PhpProjectSharedConfiguration" php_language_level="8.0" />
|
||||
<component name="PhpStanOptionsConfiguration">
|
||||
<option name="transferred" value="true" />
|
||||
</component>
|
||||
<component name="PsalmOptionsConfiguration">
|
||||
<option name="transferred" value="true" />
|
||||
</component>
|
||||
</project>
|
344
.idea/workspace.xml
generated
Normal file
@@ -0,0 +1,344 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="AnalysisUIOptions">
|
||||
<option name="ANALYZE_INJECTED_CODE" value="false" />
|
||||
</component>
|
||||
<component name="AutoImportSettings">
|
||||
<option name="autoReloadType" value="SELECTIVE" />
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="e6f2f7bd-40fa-4e42-878e-5f7452e4f859" name="Changes" comment="improve CSS on workshop 5">
|
||||
<change afterPath="$PROJECT_DIR$/ajax_workshop_1/gethint.php" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/ajax_workshop_1/index.html" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/ajax_workshop_1/index.js" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/ajax_workshop_1/styles.css" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/js_workshop6/favicon.ico" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/js_workshop6/index.html" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/js_workshop6/index.js" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/js_workshop6/styles.css" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/js_workshop7/favicon.ico" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/js_workshop7/index.html" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/js_workshop7/index.js" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/js_workshop7/styles.css" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/js_workshop8/SampleVideo.mp4" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/js_workshop8/index.html" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/js_workshop8/index.js" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/js_workshop8/styles.css" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/.gitignore" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/PHPStorm Repo.iml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/modules.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/php.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/vcs.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/MVCtemplate-23-24/.idea/.gitignore" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/MVCtemplate-23-24/.idea/.name" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/MVCtemplate-23-24/.idea/MVCtemplate.iml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/MVCtemplate-23-24/.idea/deployment.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/MVCtemplate-23-24/.idea/encodings.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/MVCtemplate-23-24/.idea/misc.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/MVCtemplate-23-24/.idea/modules.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/MVCtemplate-23-24/.idea/php.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/MVCtemplate-23-24/.idea/scopes/scope_settings.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/MVCtemplate-23-24/.idea/vcs.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/MVCtemplate-23-24/Views/index.phtml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/MVCtemplate-23-24/Views/page1.phtml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/MVCtemplate-23-24/Views/template/footer.phtml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/MVCtemplate-23-24/Views/template/header.phtml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/MVCtemplate-23-24/css/my-style.css" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/MVCtemplate-23-24/fonts/glyphicons-halflings-regular.eot" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/MVCtemplate-23-24/fonts/glyphicons-halflings-regular.svg" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/MVCtemplate-23-24/fonts/glyphicons-halflings-regular.ttf" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/MVCtemplate-23-24/fonts/glyphicons-halflings-regular.woff" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/MVCtemplate-23-24/images/new_uos_logo.jpg" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/MVCtemplate-23-24/index.php" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/MVCtemplate-23-24/js/bootstrap.js" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/MVCtemplate-23-24/js/bootstrap.min.js" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/MVCtemplate-23-24/page1.php" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/MVCtemplate-23-24/phpinfo.php" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/access.log" beforeDir="false" afterPath="$PROJECT_DIR$/access.log" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/docker-compose.yml" beforeDir="false" afterPath="$PROJECT_DIR$/docker-compose.yml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/error.log" beforeDir="false" afterPath="$PROJECT_DIR$/error.log" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/nginx/php/fpm-php.www.log" beforeDir="false" afterPath="$PROJECT_DIR$/nginx/php/fpm-php.www.log" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/test/.idea/.gitignore" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/test/.idea/modules.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/test/.idea/php.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/test/.idea/test.iml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/test/composer.json" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop1/.idea/.gitignore" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop1/.idea/modules.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop1/.idea/php.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop1/.idea/workshop1.iml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop1/composer.json" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop1/index.php" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop2/.idea/.gitignore" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop2/.idea/inspectionProfiles/Project_Default.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop2/.idea/jsLibraryMappings.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop2/.idea/modules.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop2/.idea/php.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop2/.idea/workshop2.iml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop2/index.css" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop2/index.html" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop2/index.php" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop2/passingdata.php" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop3/Emoji/index.php" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop3/Operators/index.php" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop3/Strings/index.php" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop4/.idea/.gitignore" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop4/.idea/.name" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop4/.idea/MVCtemplate.iml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop4/.idea/deployment.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop4/.idea/encodings.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop4/.idea/misc.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop4/.idea/modules.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop4/.idea/php.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop4/.idea/scopes/scope_settings.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop4/.idea/vcs.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop4/Models/Converter.php" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop4/Views/abouttemplate.phtml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop4/Views/converter.phtml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop4/Views/index.phtml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop4/Views/page1.phtml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop4/Views/template/footer.phtml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop4/Views/template/header.phtml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop4/Views/template/oldheader.phtml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop4/abouttemplate.php" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop4/converter.php" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop4/css/my-style.css" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop4/fonts/glyphicons-halflings-regular.eot" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop4/fonts/glyphicons-halflings-regular.svg" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop4/fonts/glyphicons-halflings-regular.ttf" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop4/fonts/glyphicons-halflings-regular.woff" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop4/images/new_uos_logo.jpg" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop4/index.php" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop4/js/bootstrap.js" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop4/js/bootstrap.min.js" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop4/page1.php" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop4/phpinfo.php" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop5/.idea/.gitignore" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop5/.idea/.name" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop5/.idea/MVCtemplate.iml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop5/.idea/deployment.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop5/.idea/encodings.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop5/.idea/misc.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop5/.idea/modules.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop5/.idea/php.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop5/.idea/scopes/scope_settings.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop5/.idea/vcs.xml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop5/Models/Calculator.php" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop5/Views/calculator.phtml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop5/Views/index.phtml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop5/Views/page1.phtml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop5/Views/template/footer.phtml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop5/Views/template/header.phtml" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop5/calculator.php" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop5/css/my-style.css" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop5/fonts/glyphicons-halflings-regular.eot" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop5/fonts/glyphicons-halflings-regular.svg" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop5/fonts/glyphicons-halflings-regular.ttf" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop5/fonts/glyphicons-halflings-regular.woff" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop5/images/new_uos_logo.jpg" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop5/index.php" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop5/js/bootstrap.js" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop5/js/bootstrap.min.js" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop5/page1.php" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/workshop5/phpinfo.php" beforeDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="ComposerConfigs">
|
||||
<option name="configs">
|
||||
<option value="$PROJECT_DIR$/workshop1/composer.json" />
|
||||
</option>
|
||||
</component>
|
||||
<component name="ComposerSettings" notifyAboutMissingVendor="false" synchronizationState="SYNCHRONIZE">
|
||||
<pharConfigPath>$PROJECT_DIR$/test/composer.json</pharConfigPath>
|
||||
<execution />
|
||||
</component>
|
||||
<component name="FileTemplateManagerImpl">
|
||||
<option name="RECENT_TEMPLATES">
|
||||
<list>
|
||||
<option value="HTML File" />
|
||||
<option value="JavaScript File" />
|
||||
<option value="CSS File" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="PhpDebugGeneral" break_at_first_line="true" listening_started="true" />
|
||||
<component name="PhpServers">
|
||||
<servers>
|
||||
<server host="localhost" id="3a088644-6825-4f07-a32e-77865b22bd4f" name="localhost" port="8080" />
|
||||
<server host="localhost" id="38287632-911a-452e-9bbd-ac5ddc4909aa" name="Docker" port="8088" use_path_mappings="true">
|
||||
<path_mappings>
|
||||
<mapping local-root="$PROJECT_DIR$" remote-root="/var/www" />
|
||||
</path_mappings>
|
||||
</server>
|
||||
</servers>
|
||||
</component>
|
||||
<component name="PhpWorkspaceProjectConfiguration" interpreter_name="PHP 8.2" />
|
||||
<component name="ProblemsViewState">
|
||||
<option name="selectedTabId" value="CurrentFile" />
|
||||
</component>
|
||||
<component name="ProjectColorInfo">{
|
||||
"associatedIndex": 3
|
||||
}</component>
|
||||
<component name="ProjectId" id="2nVn2fVmsKSLqHiVCU3uGfeOwpm" />
|
||||
<component name="ProjectLevelVcsManager">
|
||||
<ConfirmationsSetting value="2" id="Add" />
|
||||
</component>
|
||||
<component name="ProjectViewState">
|
||||
<option name="hideEmptyMiddlePackages" value="true" />
|
||||
<option name="showLibraryContents" value="true" />
|
||||
</component>
|
||||
<component name="PropertiesComponent">{
|
||||
"keyToString": {
|
||||
"DefaultHtmlFileTemplate": "HTML File",
|
||||
"Docker.Docker Compose Up.executor": "Run",
|
||||
"Docker.Docker Compose.executor": "Run",
|
||||
"Docker.Unnamed.executor": "Run",
|
||||
"PHP Built-in Web Server.Built-In Webserver.executor": "Run",
|
||||
"PHP Built-in Web Server.Unnamed.executor": "Run",
|
||||
"PHP Remote Debug.Docker Debug.executor": "Debug",
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"RunOnceActivity.git.unshallow": "true",
|
||||
"git-widget-placeholder": "main",
|
||||
"last_opened_file_path": "/Users/boris/Library/CloudStorage/OneDrive-UniversityofSalford/CSCS-Y2/Client Server Systems/PHPStorm Repo/js_workshop8",
|
||||
"list.type.of.created.stylesheet": "CSS",
|
||||
"node.js.detected.package.eslint": "true",
|
||||
"node.js.detected.package.tslint": "true",
|
||||
"node.js.selected.package.eslint": "(autodetect)",
|
||||
"node.js.selected.package.tslint": "(autodetect)",
|
||||
"nodejs_package_manager_path": "npm",
|
||||
"run.code.analysis.last.selected.profile": "pProject Default",
|
||||
"settings.editor.selected.configurable": "settings.php.debug.servers",
|
||||
"vue.rearranger.settings.migration": "true"
|
||||
},
|
||||
"keyToStringList": {
|
||||
"DatabaseDriversLRU": [
|
||||
"sqlite"
|
||||
]
|
||||
}
|
||||
}</component>
|
||||
<component name="RecentsManager">
|
||||
<key name="CopyFile.RECENT_KEYS">
|
||||
<recent name="$PROJECT_DIR$/js_workshop8" />
|
||||
<recent name="$PROJECT_DIR$" />
|
||||
<recent name="$PROJECT_DIR$/workshop6/Views" />
|
||||
<recent name="$PROJECT_DIR$/workshop6" />
|
||||
<recent name="$PROJECT_DIR$/workshop5/Views" />
|
||||
</key>
|
||||
<key name="MoveFile.RECENT_KEYS">
|
||||
<recent name="$PROJECT_DIR$/ajax_workshop_2/Views" />
|
||||
<recent name="$PROJECT_DIR$/ajax_workshop_2" />
|
||||
<recent name="$PROJECT_DIR$/ajax_workshop_2/Models" />
|
||||
<recent name="$PROJECT_DIR$/js_workshop8" />
|
||||
<recent name="$PROJECT_DIR$/js_workshop1" />
|
||||
</key>
|
||||
</component>
|
||||
<component name="RunManager" selected="Docker.Docker Compose Up">
|
||||
<configuration name="Built-In Webserver" type="PhpBuiltInWebServerConfigurationType" factoryName="PHP Built-in Web Server" document_root="$PROJECT_DIR$" port="8080">
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<configuration name="Docker Debug" type="PhpRemoteDebugRunConfigurationType" factoryName="PHP Remote Debug" filter_connections="FILTER" server_name="Docker" session_id="docker">
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<configuration name="Docker Compose Up" type="docker-deploy" factoryName="docker-compose.yml" server-name="Docker">
|
||||
<deployment type="docker-compose.yml">
|
||||
<settings>
|
||||
<option name="envFilePath" value="" />
|
||||
<option name="removeOrphansOnComposeDown" value="false" />
|
||||
<option name="sourceFilePath" value="docker-compose.yml" />
|
||||
</settings>
|
||||
</deployment>
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<list>
|
||||
<item itemvalue="Docker.Docker Compose Up" />
|
||||
<item itemvalue="PHP Built-in Web Server.Built-In Webserver" />
|
||||
<item itemvalue="PHP Remote Debug.Docker Debug" />
|
||||
</list>
|
||||
</component>
|
||||
<component name="SharedIndexes">
|
||||
<attachedChunks>
|
||||
<set>
|
||||
<option value="bundled-js-predefined-d6986cc7102b-822845ee3bb5-JavaScript-PS-243.23654.168" />
|
||||
<option value="bundled-php-predefined-a98d8de5180a-4c3855d0ab16-com.jetbrains.php.sharedIndexes-PS-243.23654.168" />
|
||||
</set>
|
||||
</attachedChunks>
|
||||
</component>
|
||||
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="Default task">
|
||||
<changelist id="e6f2f7bd-40fa-4e42-878e-5f7452e4f859" name="Changes" comment="" />
|
||||
<created>1729066904428</created>
|
||||
<option name="number" value="Default" />
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1729066904428</updated>
|
||||
<workItem from="1729066905730" duration="24953000" />
|
||||
<workItem from="1729767536480" duration="1929000" />
|
||||
<workItem from="1730375221265" duration="533000" />
|
||||
<workItem from="1730375763626" duration="29000" />
|
||||
<workItem from="1730375804893" duration="598000" />
|
||||
<workItem from="1730377524338" duration="1008000" />
|
||||
<workItem from="1730378544000" duration="99000" />
|
||||
<workItem from="1730378708802" duration="2494000" />
|
||||
<workItem from="1731061137810" duration="193000" />
|
||||
<workItem from="1731062774546" duration="19000" />
|
||||
<workItem from="1731068997365" duration="1140000" />
|
||||
<workItem from="1731072760630" duration="21000" />
|
||||
<workItem from="1731073553773" duration="51000" />
|
||||
<workItem from="1737037985730" duration="1378000" />
|
||||
<workItem from="1737633482758" duration="15594000" />
|
||||
<workItem from="1738237019574" duration="15889000" />
|
||||
<workItem from="1738329990864" duration="841000" />
|
||||
<workItem from="1738843358594" duration="1402000" />
|
||||
</task>
|
||||
<task id="LOCAL-00001" summary="commit existing workshops">
|
||||
<option name="closed" value="true" />
|
||||
<created>1729067067742</created>
|
||||
<option name="number" value="00001" />
|
||||
<option name="presentableId" value="LOCAL-00001" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1729067067742</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00002" summary="commit existing workshops">
|
||||
<option name="closed" value="true" />
|
||||
<created>1729121774141</created>
|
||||
<option name="number" value="00002" />
|
||||
<option name="presentableId" value="LOCAL-00002" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1729121774142</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00003" summary="workshop 4,5">
|
||||
<option name="closed" value="true" />
|
||||
<created>1729121808740</created>
|
||||
<option name="number" value="00003" />
|
||||
<option name="presentableId" value="LOCAL-00003" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1729121808741</updated>
|
||||
</task>
|
||||
<task id="LOCAL-00004" summary="improve CSS on workshop 5">
|
||||
<option name="closed" value="true" />
|
||||
<created>1729204119068</created>
|
||||
<option name="number" value="00004" />
|
||||
<option name="presentableId" value="LOCAL-00004" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1729204119068</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="5" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
<option name="version" value="3" />
|
||||
</component>
|
||||
<component name="VcsManagerConfiguration">
|
||||
<MESSAGE value="commit existing workshops" />
|
||||
<MESSAGE value="workshop 4,5" />
|
||||
<MESSAGE value="improve CSS on workshop 5" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="improve CSS on workshop 5" />
|
||||
</component>
|
||||
</project>
|
0
access.log
Normal file → Executable file
BIN
ajax_workshop_1/favicon.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
51
ajax_workshop_1/gethint.php
Normal file
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
$a[] = "Anna";
|
||||
$a[] = "Brittany";
|
||||
$a[] = "Cinderella";
|
||||
$a[] = "Diana";
|
||||
$a[] = "Eva";
|
||||
$a[] = "Fiona";
|
||||
$a[] = "Gunda";
|
||||
$a[] = "Hege";
|
||||
$a[] = "Inga";
|
||||
$a[] = "Johanna";
|
||||
$a[] = "Kitty";
|
||||
$a[] = "Linda";
|
||||
$a[] = "Nina";
|
||||
$a[] = "Ophelia";
|
||||
$a[] = "Petunia";
|
||||
$a[] = "Amanda";
|
||||
$a[] = "Raquel";
|
||||
$a[] = "Cindy";
|
||||
$a[] = "Doris";
|
||||
$a[] = "Eve";
|
||||
$a[] = "Evita";
|
||||
$a[] = "Sunniva";
|
||||
$a[] = "Tove";
|
||||
$a[] = "Unni";
|
||||
$a[] = "Violet";
|
||||
$a[] = "Liza";
|
||||
$a[] = "Elizabeth";
|
||||
$a[] = "Ellen";
|
||||
$a[] = "Wenche";
|
||||
$a[] = "Vicky";
|
||||
|
||||
// get the q parameter, the text typed in, from URL
|
||||
$q = $_REQUEST["q"];
|
||||
$hint = "";
|
||||
// lookup all hints from array if $q is different from ""
|
||||
if ($q !== "") {
|
||||
$q = strtolower($q);
|
||||
$len=strlen($q);
|
||||
foreach($a as $name) {
|
||||
if (stristr($q, substr($name, 0, $len))) {
|
||||
if ($hint === "") {
|
||||
$hint = $name;
|
||||
} else {
|
||||
$hint .= ", $name";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Output "no suggestion" if no hint was found or output results
|
||||
echo $hint === "" ? "no suggestion" : $hint;
|
19
ajax_workshop_1/index.html
Normal file
@@ -0,0 +1,19 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>AJAX Live Search</title>
|
||||
<link href="favicon.png" rel="icon">
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
|
||||
<link href="styles.css" rel="stylesheet">
|
||||
</head>
|
||||
<body>
|
||||
<form>
|
||||
First name: <input id="selectInput" type="text" onkeyup="showHintSelect(this.value)">
|
||||
</form>
|
||||
<p>Suggestions: <span id="txtHint"></span></p>
|
||||
<select id="resultsSelectionBox"></select>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous" defer></script>
|
||||
<script src="index.js" defer></script>
|
||||
</body>
|
||||
</html>
|
40
ajax_workshop_1/index.js
Normal file
@@ -0,0 +1,40 @@
|
||||
function showHint(str) {
|
||||
if (str.length === 0) {
|
||||
document.getElementById("txtHint").innerHTML = "";
|
||||
} else {
|
||||
let xmlhttp = new XMLHttpRequest();
|
||||
xmlhttp.onreadystatechange = function() {
|
||||
if (this.readyState == 4 && this.status == 200) {
|
||||
var uic = document.getElementById("txtHint")
|
||||
uic.innerHTML = this.responseText;
|
||||
}
|
||||
};
|
||||
xmlhttp.open("GET", "gethint.php?q=" + str, true);
|
||||
xmlhttp.send();
|
||||
}
|
||||
}
|
||||
|
||||
function showHintSelect(str) {
|
||||
if (str.length === 0) {
|
||||
document.getElementById("txtHint").innerHTML = "";
|
||||
} else {
|
||||
let xmlhttp = new XMLHttpRequest();
|
||||
xmlhttp.onreadystatechange = function() {
|
||||
if (this.readyState === 4 && this.status === 200) {
|
||||
let select = document.getElementById("resultsSelectionBox")
|
||||
let names = this.responseText.split(',');
|
||||
for (let i = 0; i<names.length; i++) {
|
||||
let opt = document.createElement('option');
|
||||
opt.value = names[i];
|
||||
opt.innerHTML = names[i];
|
||||
select.appendChild(opt);
|
||||
}
|
||||
let hint = document.getElementById("txtHint")
|
||||
hint.innerHTML = this.responseText;
|
||||
}
|
||||
};
|
||||
xmlhttp.open("GET", "gethint.php?q=" + str, true);
|
||||
xmlhttp.send();
|
||||
}
|
||||
}
|
||||
|
0
ajax_workshop_1/styles.css
Normal file
16
workshop2/.idea/.gitignore → ajax_workshop_2/.idea/.gitignore
generated
vendored
@@ -1,8 +1,8 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
26
workshop5/.idea/deployment.xml → ajax_workshop_2/.idea/deployment.xml
generated
Normal file → Executable file
@@ -1,14 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="PublishConfigData" remoteFilesAllowedToDisappearOnAutoupload="false">
|
||||
<serverData>
|
||||
<paths name="workshop1">
|
||||
<serverdata>
|
||||
<mappings>
|
||||
<mapping local="$PROJECT_DIR$" web="/" />
|
||||
</mappings>
|
||||
</serverdata>
|
||||
</paths>
|
||||
</serverData>
|
||||
</component>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="PublishConfigData" remoteFilesAllowedToDisappearOnAutoupload="false">
|
||||
<serverData>
|
||||
<paths name="workshop1">
|
||||
<serverdata>
|
||||
<mappings>
|
||||
<mapping local="$PROJECT_DIR$" web="/" />
|
||||
</mappings>
|
||||
</serverdata>
|
||||
</paths>
|
||||
</serverData>
|
||||
</component>
|
||||
</project>
|
45
ajax_workshop_2/Models/Database.php
Normal file
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
class Database {
|
||||
/**
|
||||
* @var Database
|
||||
*/
|
||||
protected static $_dbInstance = null;
|
||||
|
||||
/**
|
||||
* @var PDO
|
||||
*/
|
||||
protected $_dbHandle;
|
||||
|
||||
/**
|
||||
* @return Database
|
||||
*/
|
||||
public static function getInstance() {
|
||||
|
||||
if(self::$_dbInstance === null) { //checks if the PDO exists
|
||||
// creates new instance if not, sending in connection info
|
||||
self::$_dbInstance = new self();
|
||||
}
|
||||
return self::$_dbInstance;
|
||||
}
|
||||
|
||||
private function __construct() {
|
||||
try {
|
||||
$this->_dbHandle = new PDO("sqlite:students.sqlite");
|
||||
}
|
||||
catch (PDOException $e) { // catch any failure to connect to the database
|
||||
echo $e->getMessage();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return PDO
|
||||
*/
|
||||
public function getdbConnection() {
|
||||
return $this->_dbHandle; // returns the PDO handle to be used elsewhere
|
||||
}
|
||||
|
||||
public function __destruct() {
|
||||
$this->_dbHandle = null; // destroys the PDO handle when no longer needed
|
||||
}
|
||||
}
|
36
ajax_workshop_2/Models/StudentData.php
Normal file
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
/*
|
||||
* Class StudentData
|
||||
*
|
||||
* This class models a student’s data, utilizing protected fields for data encapsulation.
|
||||
* It takes a database row (array) as input in the constructor and assigns values to private fields, which include:
|
||||
* - Student ID
|
||||
* - First and Last Name
|
||||
* - Course ID
|
||||
* - International status (converted to 'yes' or 'no' strings for clarity)
|
||||
*/
|
||||
class StudentData {
|
||||
|
||||
// private fields
|
||||
protected $_id, $_firstName, $_lastName, $_courseID, $_international;
|
||||
|
||||
// constructor
|
||||
public function __construct($dbRow) {
|
||||
$this->_id = $dbRow['student_id'];
|
||||
$this->_firstName = $dbRow['first_name'];
|
||||
$this->_lastName = $dbRow['last_name'];
|
||||
if ($dbRow['international']) $this->_international = 'yes'; else $this->_international = 'no';
|
||||
$this->_courseID = $dbRow['courseID'];
|
||||
}
|
||||
|
||||
// accessors
|
||||
public function getStudentID() {
|
||||
return $this->_id;
|
||||
}
|
||||
|
||||
// add in accessors for the other fields, check the view file in the given project to see what
|
||||
// the accessor methods should be called
|
||||
|
||||
}
|
||||
|
||||
|
32
ajax_workshop_2/Models/StudentsDataSet.php
Normal file
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
require_once ('Database.php');
|
||||
require_once ('StudentData.php');
|
||||
|
||||
class StudentsDataSet {
|
||||
protected $_dbHandle, $_dbInstance;
|
||||
|
||||
public function __construct() {
|
||||
$this->_dbInstance = Database::getInstance();
|
||||
$this->_dbHandle = $this->_dbInstance->getdbConnection();
|
||||
}
|
||||
|
||||
public function fetchAllStudents(): array
|
||||
{
|
||||
$sqlQuery = 'SELECT * FROM students;';
|
||||
|
||||
$statement = $this->_dbHandle->prepare($sqlQuery); // prepare a PDO statement
|
||||
$statement->execute(); // execute the PDO statement
|
||||
|
||||
$dataSet = [];
|
||||
// loop through and read the results of the query and cast
|
||||
// them into a matching object
|
||||
while ($row = $statement->fetch()) {
|
||||
$dataSet[] = new StudentData($row);
|
||||
}
|
||||
return $dataSet;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
30
ajax_workshop_2/Views/index.phtml
Normal file
@@ -0,0 +1,30 @@
|
||||
<?php require('template/header.phtml') ?>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-5">
|
||||
<p><?php echo $view->dbMessage; ?></p>
|
||||
</div>
|
||||
<div class="col-7">
|
||||
<p>Current script <?php echo $_SERVER["PHP_SELF"]; ?></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<table class="table table-bordered">
|
||||
<thead> <tr> <th>Student ID</th> <th>First name</th> <th>Last name</th> <th>International</th> <th>CourseID</th> </tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
<?php foreach ($view->studentsDataSet as $studentData) {
|
||||
echo '<tr> <td>' . $studentData->getStudentID() .
|
||||
'</td> <td>' . $studentData->getFirstName() .
|
||||
'</td> <td>' . $studentData->getLastName() .
|
||||
'</td> <td>' . $studentData->getInternational() .
|
||||
'</td> <td>' . $studentData->getCourseID() .
|
||||
'</td> </td> </tr>';
|
||||
} ?>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
<?php require('template/footer.phtml') ?>
|
15
ajax_workshop_2/Views/template/footer.phtml
Executable file
@@ -0,0 +1,15 @@
|
||||
</main>
|
||||
|
||||
|
||||
<footer class="row">
|
||||
<div id="footer" class="col-xs-12">
|
||||
<p>Web-site development using the MVC design pattern and the Bootstrap CSS framework</p>
|
||||
</div>
|
||||
</footer>
|
||||
<!-- Bootstrap core JavaScript
|
||||
================================================== -->
|
||||
<!-- Placed at the end of the document so the pages load faster -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/js/bootstrap.bundle.min.js" crossorigin="anonymous"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
42
ajax_workshop_2/Views/template/header.phtml
Executable file
@@ -0,0 +1,42 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
|
||||
<!-- Bootstrap core CSS -->
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous">
|
||||
|
||||
<link href="css/my-style.css" rel="stylesheet">
|
||||
|
||||
<title>Server-Side Programming - <?php echo $view->pageTitle; ?></title>
|
||||
</head>
|
||||
|
||||
<body role="document">
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div id="title" class="col-xs-12">
|
||||
<img src="images/new_uos_logo.jpg" alt="Salford University" />
|
||||
<div class="pull-right"> <h1><?php echo $view->pageTitle ?> </h1></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row">
|
||||
<nav id="menu" class="col-xs-6 col-sm-3 col-md-2">
|
||||
<h2>Menu</h2>
|
||||
<ul class="nav flex-column">
|
||||
<li><a href="index.php">Students</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<main id="content" class="col-xs-6 col-sm-9 col-md-10">
|
||||
|
||||
|
||||
|
38
ajax_workshop_2/css/my-style.css
Executable file
@@ -0,0 +1,38 @@
|
||||
#title {
|
||||
margin-top: 12px;
|
||||
background-color: #fff;
|
||||
color: #000;
|
||||
|
||||
}
|
||||
#menu {
|
||||
border-top: solid 6px #f00;
|
||||
background-color: #f00;
|
||||
color: #fff;
|
||||
/*height: 400px;*/
|
||||
}
|
||||
|
||||
#menu a {
|
||||
background-color: #f00;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
}
|
||||
#menu a:hover {
|
||||
background-color: #f00;
|
||||
color: #ddd;
|
||||
text-decoration:underline;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#content {
|
||||
background-color: #fff;
|
||||
border-top: solid 6px #f00;
|
||||
|
||||
}
|
||||
|
||||
#footer {
|
||||
margin_top: 20px;
|
||||
text-align: center;
|
||||
background-color: #000;
|
||||
color: #fff;
|
||||
}
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
25
ajax_workshop_2/index.php
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
// load required classes
|
||||
require_once('Models/StudentsDataSet.php');
|
||||
|
||||
// make a view class
|
||||
$view = new stdClass();
|
||||
$view->pageTitle = 'Student Information System';
|
||||
|
||||
// create a new student dataset object that we can generate data from
|
||||
$studentsDataSet = new StudentsDataSet();
|
||||
$view->studentsDataSet = $studentsDataSet->fetchAllStudents();
|
||||
|
||||
// send a results count to the view to show how many results were retrieved
|
||||
if (count($view->studentsDataSet) == 0)
|
||||
{
|
||||
$view->dbMessage = "No results";
|
||||
}
|
||||
else
|
||||
{
|
||||
$view->dbMessage = count($view->studentsDataSet) . " result(s)";
|
||||
}
|
||||
|
||||
// include the view
|
||||
require_once('Views/index.phtml');
|
@@ -1,2 +1,2 @@
|
||||
<?php
|
||||
phpinfo();
|
||||
<?php
|
||||
phpinfo();
|
BIN
ajax_workshop_2/students.sqlite
Normal file
@@ -4,10 +4,10 @@ services:
|
||||
image: nginx
|
||||
volumes:
|
||||
- ./nginx/configs/:/etc/nginx/conf.d
|
||||
- /home/boris/OneDrive/CSCS-Y2/Client Server Systems/PHPStorm Repo/nginx/nginx.conf:/etc/nginx/nginx.conf
|
||||
- /Users/boris/OneDrive/OneDrive - University of Salford/CSCS-Y2/Client Server Systems/PHPStorm Repo/nginx/nginx.conf:/etc/nginx/nginx.conf
|
||||
- ./:/var/www/
|
||||
- /home/boris/OneDrive/CSCS-Y2/Client Server Systems/PHPStorm Repo/access.log:/var/log/nginx/access.log
|
||||
- /home/boris/OneDrive/CSCS-Y2/Client Server Systems/PHPStorm Repo/error.log:/var/log/nginx/error.log
|
||||
- /Users/boris/OneDrive/OneDrive - University of Salford/CSCS-Y2/Client Server Systems/PHPStorm Repo/access.log:/var/log/nginx/access.log
|
||||
- /Users/boris/OneDrive/OneDrive - University of Salford/CSCS-Y2/Client Server Systems/PHPStorm Repo/error.log:/var/log/nginx/error.log
|
||||
ports:
|
||||
- "8088:80"
|
||||
environment:
|
||||
@@ -22,5 +22,5 @@ services:
|
||||
image: php:8-fpm
|
||||
volumes:
|
||||
- ./:/var/www/
|
||||
- /home/boris/OneDrive/CSCS-Y2/Client Server Systems/PHPStorm Repo/nginx/php/config/www.conf:/usr/local/etc/php-fpm.d/www.conf
|
||||
- /home/boris/OneDrive/CSCS-Y2/Client Server Systems/PHPStorm Repo/nginx/php/fpm-php.www.log:/var/log/fpm-php.www.log
|
||||
- /Users/boris/OneDrive/OneDrive - University of Salford/CSCS-Y2/Client Server Systems/PHPStorm Repo/nginx/php/config/www.conf:/usr/local/etc/php-fpm.d/www.conf
|
||||
- /Users/boris/OneDrive/OneDrive - University of Salford/CSCS-Y2/Client Server Systems/PHPStorm Repo/nginx/php/fpm-php.www.log:/var/log/fpm-php.www.log
|
||||
|
600
error.log
Normal file → Executable file
@@ -40,3 +40,603 @@
|
||||
2024/10/16 16:15:27 [notice] 1#1: start worker process 33
|
||||
2024/10/16 16:15:27 [notice] 1#1: start worker process 34
|
||||
2024/10/16 16:15:27 [notice] 1#1: start worker process 35
|
||||
2024/10/17 09:27:37 [notice] 1#1: using the "epoll" event method
|
||||
2024/10/17 09:27:37 [notice] 1#1: nginx/1.27.2
|
||||
2024/10/17 09:27:37 [notice] 1#1: built by gcc 12.2.0 (Debian 12.2.0-14)
|
||||
2024/10/17 09:27:37 [notice] 1#1: OS: Linux 6.8.0-45-generic
|
||||
2024/10/17 09:27:37 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
|
||||
2024/10/17 09:27:37 [notice] 1#1: start worker processes
|
||||
2024/10/17 09:27:37 [notice] 1#1: start worker process 28
|
||||
2024/10/17 09:27:37 [notice] 1#1: start worker process 29
|
||||
2024/10/17 09:27:37 [notice] 1#1: start worker process 30
|
||||
2024/10/17 09:27:37 [notice] 1#1: start worker process 31
|
||||
2024/10/17 09:27:37 [notice] 1#1: start worker process 32
|
||||
2024/10/17 09:27:37 [notice] 1#1: start worker process 33
|
||||
2024/10/17 09:27:37 [notice] 1#1: start worker process 34
|
||||
2024/10/17 09:27:37 [notice] 1#1: start worker process 35
|
||||
2024/10/24 10:59:19 [notice] 1#1: using the "epoll" event method
|
||||
2024/10/24 10:59:19 [notice] 1#1: nginx/1.27.2
|
||||
2024/10/24 10:59:19 [notice] 1#1: built by gcc 12.2.0 (Debian 12.2.0-14)
|
||||
2024/10/24 10:59:19 [notice] 1#1: OS: Linux 6.8.0-45-generic
|
||||
2024/10/24 10:59:19 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
|
||||
2024/10/24 10:59:19 [notice] 1#1: start worker processes
|
||||
2024/10/24 10:59:19 [notice] 1#1: start worker process 28
|
||||
2024/10/24 10:59:19 [notice] 1#1: start worker process 29
|
||||
2024/10/24 10:59:19 [notice] 1#1: start worker process 30
|
||||
2024/10/24 10:59:19 [notice] 1#1: start worker process 31
|
||||
2024/10/24 10:59:19 [notice] 1#1: start worker process 32
|
||||
2024/10/24 10:59:19 [notice] 1#1: start worker process 33
|
||||
2024/10/24 10:59:19 [notice] 1#1: start worker process 34
|
||||
2024/10/24 10:59:19 [notice] 1#1: start worker process 35
|
||||
2024/10/31 12:29:01 [notice] 1#1: using the "epoll" event method
|
||||
2024/10/31 12:29:01 [notice] 1#1: nginx/1.27.2
|
||||
2024/10/31 12:29:01 [notice] 1#1: built by gcc 12.2.0 (Debian 12.2.0-14)
|
||||
2024/10/31 12:29:01 [notice] 1#1: OS: Linux 6.8.0-47-generic
|
||||
2024/10/31 12:29:01 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
|
||||
2024/10/31 12:29:01 [notice] 1#1: start worker processes
|
||||
2024/10/31 12:29:01 [notice] 1#1: start worker process 28
|
||||
2024/10/31 12:29:01 [notice] 1#1: start worker process 29
|
||||
2024/10/31 12:29:01 [notice] 1#1: start worker process 30
|
||||
2024/10/31 12:29:01 [notice] 1#1: start worker process 31
|
||||
2024/10/31 12:29:01 [notice] 1#1: start worker process 32
|
||||
2024/10/31 12:29:01 [notice] 1#1: start worker process 33
|
||||
2024/10/31 12:29:01 [notice] 1#1: start worker process 34
|
||||
2024/10/31 12:29:01 [notice] 1#1: start worker process 35
|
||||
2024/11/07 13:20:58 [notice] 1#1: signal 3 (SIGQUIT) received, shutting down
|
||||
2024/11/07 13:20:58 [notice] 29#29: gracefully shutting down
|
||||
2024/11/07 13:20:58 [notice] 32#32: gracefully shutting down
|
||||
2024/11/07 13:20:58 [notice] 31#31: gracefully shutting down
|
||||
2024/11/07 13:20:58 [notice] 34#34: gracefully shutting down
|
||||
2024/11/07 13:20:58 [notice] 28#28: gracefully shutting down
|
||||
2024/11/07 13:20:58 [notice] 33#33: gracefully shutting down
|
||||
2024/11/07 13:20:58 [notice] 30#30: gracefully shutting down
|
||||
2024/11/07 13:20:58 [notice] 29#29: exiting
|
||||
2024/11/07 13:20:58 [notice] 32#32: exiting
|
||||
2024/11/07 13:20:58 [notice] 31#31: exiting
|
||||
2024/11/07 13:20:58 [notice] 34#34: exiting
|
||||
2024/11/07 13:20:58 [notice] 28#28: exiting
|
||||
2024/11/07 13:20:58 [notice] 33#33: exiting
|
||||
2024/11/07 13:20:58 [notice] 30#30: exiting
|
||||
2024/11/07 13:20:58 [notice] 32#32: exit
|
||||
2024/11/07 13:20:58 [notice] 29#29: exit
|
||||
2024/11/07 13:20:58 [notice] 31#31: exit
|
||||
2024/11/07 13:20:58 [notice] 28#28: exit
|
||||
2024/11/07 13:20:58 [notice] 34#34: exit
|
||||
2024/11/07 13:20:58 [notice] 30#30: exit
|
||||
2024/11/07 13:20:58 [notice] 33#33: exit
|
||||
2024/11/07 13:20:58 [notice] 35#35: gracefully shutting down
|
||||
2024/11/07 13:20:58 [notice] 35#35: exiting
|
||||
2024/11/07 13:20:58 [notice] 35#35: exit
|
||||
2024/11/07 13:20:58 [notice] 1#1: signal 17 (SIGCHLD) received from 29
|
||||
2024/11/07 13:20:58 [notice] 1#1: worker process 29 exited with code 0
|
||||
2024/11/07 13:20:58 [notice] 1#1: worker process 30 exited with code 0
|
||||
2024/11/07 13:20:58 [notice] 1#1: worker process 31 exited with code 0
|
||||
2024/11/07 13:20:58 [notice] 1#1: worker process 33 exited with code 0
|
||||
2024/11/07 13:20:58 [notice] 1#1: worker process 34 exited with code 0
|
||||
2024/11/07 13:20:58 [notice] 1#1: signal 29 (SIGIO) received
|
||||
2024/11/07 13:20:58 [notice] 1#1: signal 17 (SIGCHLD) received from 34
|
||||
2024/11/07 13:20:58 [notice] 1#1: signal 17 (SIGCHLD) received from 35
|
||||
2024/11/07 13:20:58 [notice] 1#1: worker process 35 exited with code 0
|
||||
2024/11/07 13:20:58 [notice] 1#1: signal 29 (SIGIO) received
|
||||
2024/11/07 13:20:58 [notice] 1#1: signal 17 (SIGCHLD) received from 28
|
||||
2024/11/07 13:20:58 [notice] 1#1: worker process 28 exited with code 0
|
||||
2024/11/07 13:20:58 [notice] 1#1: worker process 32 exited with code 0
|
||||
2024/11/07 13:20:58 [notice] 1#1: exit
|
||||
2024/11/08 10:19:03 [notice] 1#1: using the "epoll" event method
|
||||
2024/11/08 10:19:03 [notice] 1#1: nginx/1.27.2
|
||||
2024/11/08 10:19:03 [notice] 1#1: built by gcc 12.2.0 (Debian 12.2.0-14)
|
||||
2024/11/08 10:19:03 [notice] 1#1: OS: Linux 6.8.0-47-generic
|
||||
2024/11/08 10:19:03 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
|
||||
2024/11/08 10:19:03 [notice] 1#1: start worker processes
|
||||
2024/11/08 10:19:03 [notice] 1#1: start worker process 28
|
||||
2024/11/08 10:19:03 [notice] 1#1: start worker process 29
|
||||
2024/11/08 10:19:03 [notice] 1#1: start worker process 30
|
||||
2024/11/08 10:19:03 [notice] 1#1: start worker process 31
|
||||
2024/11/08 10:19:03 [notice] 1#1: start worker process 32
|
||||
2024/11/08 10:19:03 [notice] 1#1: start worker process 33
|
||||
2024/11/08 10:19:03 [notice] 1#1: start worker process 34
|
||||
2024/11/08 10:19:03 [notice] 1#1: start worker process 35
|
||||
2024/11/08 10:22:02 [notice] 1#1: signal 3 (SIGQUIT) received, shutting down
|
||||
2024/11/08 10:22:02 [notice] 28#28: gracefully shutting down
|
||||
2024/11/08 10:22:02 [notice] 30#30: gracefully shutting down
|
||||
2024/11/08 10:22:02 [notice] 29#29: gracefully shutting down
|
||||
2024/11/08 10:22:02 [notice] 30#30: exiting
|
||||
2024/11/08 10:22:02 [notice] 34#34: gracefully shutting down
|
||||
2024/11/08 10:22:02 [notice] 29#29: exiting
|
||||
2024/11/08 10:22:02 [notice] 34#34: exiting
|
||||
2024/11/08 10:22:02 [notice] 28#28: exiting
|
||||
2024/11/08 10:22:02 [notice] 29#29: exit
|
||||
2024/11/08 10:22:02 [notice] 30#30: exit
|
||||
2024/11/08 10:22:02 [notice] 28#28: exit
|
||||
2024/11/08 10:22:02 [notice] 34#34: exit
|
||||
2024/11/08 10:22:02 [notice] 31#31: gracefully shutting down
|
||||
2024/11/08 10:22:02 [notice] 31#31: exiting
|
||||
2024/11/08 10:22:02 [notice] 31#31: exit
|
||||
2024/11/08 10:22:02 [notice] 32#32: gracefully shutting down
|
||||
2024/11/08 10:22:02 [notice] 32#32: exiting
|
||||
2024/11/08 10:22:02 [notice] 32#32: exit
|
||||
2024/11/08 10:22:02 [notice] 35#35: gracefully shutting down
|
||||
2024/11/08 10:22:02 [notice] 35#35: exiting
|
||||
2024/11/08 10:22:02 [notice] 33#33: gracefully shutting down
|
||||
2024/11/08 10:22:02 [notice] 33#33: exiting
|
||||
2024/11/08 10:22:02 [notice] 35#35: exit
|
||||
2024/11/08 10:22:02 [notice] 33#33: exit
|
||||
2024/11/08 10:22:02 [notice] 1#1: signal 17 (SIGCHLD) received from 28
|
||||
2024/11/08 10:22:02 [notice] 1#1: worker process 28 exited with code 0
|
||||
2024/11/08 10:22:02 [notice] 1#1: worker process 30 exited with code 0
|
||||
2024/11/08 10:22:02 [notice] 1#1: worker process 31 exited with code 0
|
||||
2024/11/08 10:22:02 [notice] 1#1: signal 29 (SIGIO) received
|
||||
2024/11/08 10:22:02 [notice] 1#1: signal 17 (SIGCHLD) received from 29
|
||||
2024/11/08 10:22:02 [notice] 1#1: worker process 29 exited with code 0
|
||||
2024/11/08 10:22:02 [notice] 1#1: signal 29 (SIGIO) received
|
||||
2024/11/08 10:22:02 [notice] 1#1: signal 17 (SIGCHLD) received from 33
|
||||
2024/11/08 10:22:02 [notice] 1#1: worker process 33 exited with code 0
|
||||
2024/11/08 10:22:02 [notice] 1#1: worker process 34 exited with code 0
|
||||
2024/11/08 10:22:02 [notice] 1#1: signal 29 (SIGIO) received
|
||||
2024/11/08 10:22:02 [notice] 1#1: signal 17 (SIGCHLD) received from 32
|
||||
2024/11/08 10:22:02 [notice] 1#1: worker process 32 exited with code 0
|
||||
2024/11/08 10:22:02 [notice] 1#1: signal 29 (SIGIO) received
|
||||
2024/11/08 10:22:02 [notice] 1#1: signal 17 (SIGCHLD) received from 35
|
||||
2024/11/08 10:22:02 [notice] 1#1: worker process 35 exited with code 0
|
||||
2024/11/08 10:22:02 [notice] 1#1: exit
|
||||
2025/01/16 14:53:46 [notice] 1#1: using the "epoll" event method
|
||||
2025/01/16 14:53:46 [notice] 1#1: nginx/1.27.3
|
||||
2025/01/16 14:53:46 [notice] 1#1: built by gcc 12.2.0 (Debian 12.2.0-14)
|
||||
2025/01/16 14:53:46 [notice] 1#1: OS: Linux 6.10.14-linuxkit
|
||||
2025/01/16 14:53:46 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
|
||||
2025/01/16 14:53:46 [notice] 1#1: start worker processes
|
||||
2025/01/16 14:53:46 [notice] 1#1: start worker process 28
|
||||
2025/01/16 14:53:46 [notice] 1#1: start worker process 29
|
||||
2025/01/16 14:53:46 [notice] 1#1: start worker process 30
|
||||
2025/01/16 14:53:46 [notice] 1#1: start worker process 31
|
||||
2025/01/16 14:53:46 [notice] 1#1: start worker process 32
|
||||
2025/01/16 14:53:46 [notice] 1#1: start worker process 33
|
||||
2025/01/16 14:53:46 [notice] 1#1: start worker process 34
|
||||
2025/01/16 14:53:46 [notice] 1#1: start worker process 35
|
||||
2025/01/16 14:53:46 [notice] 1#1: start worker process 36
|
||||
2025/01/16 14:53:46 [notice] 1#1: start worker process 37
|
||||
2025/01/16 14:53:46 [notice] 1#1: start worker process 38
|
||||
2025/01/16 14:53:46 [notice] 1#1: start worker process 39
|
||||
2025/01/16 14:53:46 [notice] 1#1: start worker process 40
|
||||
2025/01/16 14:53:46 [notice] 1#1: start worker process 41
|
||||
2025/01/16 20:14:43 [notice] 1#1: signal 3 (SIGQUIT) received, shutting down
|
||||
2025/01/16 20:14:43 [notice] 29#29: gracefully shutting down
|
||||
2025/01/16 20:14:43 [notice] 28#28: gracefully shutting down
|
||||
2025/01/16 20:14:43 [notice] 31#31: gracefully shutting down
|
||||
2025/01/16 20:14:43 [notice] 33#33: gracefully shutting down
|
||||
2025/01/16 20:14:43 [notice] 30#30: gracefully shutting down
|
||||
2025/01/16 20:14:43 [notice] 34#34: gracefully shutting down
|
||||
2025/01/16 20:14:43 [notice] 35#35: gracefully shutting down
|
||||
2025/01/16 20:14:43 [notice] 38#38: gracefully shutting down
|
||||
2025/01/16 20:14:43 [notice] 32#32: gracefully shutting down
|
||||
2025/01/16 20:14:43 [notice] 37#37: gracefully shutting down
|
||||
2025/01/16 20:14:43 [notice] 36#36: gracefully shutting down
|
||||
2025/01/16 20:14:43 [notice] 39#39: gracefully shutting down
|
||||
2025/01/16 20:14:43 [notice] 41#41: gracefully shutting down
|
||||
2025/01/16 20:14:43 [notice] 40#40: gracefully shutting down
|
||||
2025/01/16 20:14:43 [notice] 29#29: exiting
|
||||
2025/01/16 20:14:43 [notice] 31#31: exiting
|
||||
2025/01/16 20:14:43 [notice] 33#33: exiting
|
||||
2025/01/16 20:14:43 [notice] 30#30: exiting
|
||||
2025/01/16 20:14:43 [notice] 34#34: exiting
|
||||
2025/01/16 20:14:43 [notice] 28#28: exiting
|
||||
2025/01/16 20:14:43 [notice] 35#35: exiting
|
||||
2025/01/16 20:14:43 [notice] 38#38: exiting
|
||||
2025/01/16 20:14:43 [notice] 32#32: exiting
|
||||
2025/01/16 20:14:43 [notice] 37#37: exiting
|
||||
2025/01/16 20:14:43 [notice] 39#39: exiting
|
||||
2025/01/16 20:14:43 [notice] 36#36: exiting
|
||||
2025/01/16 20:14:43 [notice] 41#41: exiting
|
||||
2025/01/16 20:14:43 [notice] 40#40: exiting
|
||||
2025/01/16 20:14:43 [notice] 33#33: exit
|
||||
2025/01/16 20:14:43 [notice] 29#29: exit
|
||||
2025/01/16 20:14:43 [notice] 31#31: exit
|
||||
2025/01/16 20:14:43 [notice] 30#30: exit
|
||||
2025/01/16 20:14:43 [notice] 34#34: exit
|
||||
2025/01/16 20:14:43 [notice] 35#35: exit
|
||||
2025/01/16 20:14:43 [notice] 38#38: exit
|
||||
2025/01/16 20:14:43 [notice] 28#28: exit
|
||||
2025/01/16 20:14:43 [notice] 32#32: exit
|
||||
2025/01/16 20:14:43 [notice] 39#39: exit
|
||||
2025/01/16 20:14:43 [notice] 37#37: exit
|
||||
2025/01/16 20:14:43 [notice] 36#36: exit
|
||||
2025/01/16 20:14:43 [notice] 41#41: exit
|
||||
2025/01/16 20:14:43 [notice] 40#40: exit
|
||||
2025/01/16 20:14:43 [notice] 1#1: signal 17 (SIGCHLD) received from 29
|
||||
2025/01/16 20:14:43 [notice] 1#1: worker process 29 exited with code 0
|
||||
2025/01/16 20:14:43 [notice] 1#1: signal 29 (SIGIO) received
|
||||
2025/01/16 20:14:43 [notice] 1#1: signal 17 (SIGCHLD) received from 41
|
||||
2025/01/16 20:14:43 [notice] 1#1: worker process 38 exited with code 0
|
||||
2025/01/16 20:14:43 [notice] 1#1: worker process 41 exited with code 0
|
||||
2025/01/16 20:14:43 [notice] 1#1: signal 17 (SIGCHLD) received from 33
|
||||
2025/01/16 20:14:43 [notice] 1#1: worker process 31 exited with code 0
|
||||
2025/01/16 20:14:43 [notice] 1#1: worker process 33 exited with code 0
|
||||
2025/01/16 20:14:43 [notice] 1#1: worker process 35 exited with code 0
|
||||
2025/01/16 20:14:43 [notice] 1#1: worker process 36 exited with code 0
|
||||
2025/01/16 20:14:43 [notice] 1#1: signal 17 (SIGCHLD) received from 31
|
||||
2025/01/16 20:14:43 [notice] 1#1: signal 29 (SIGIO) received
|
||||
2025/01/16 20:14:43 [notice] 1#1: signal 29 (SIGIO) received
|
||||
2025/01/16 20:14:43 [notice] 1#1: signal 17 (SIGCHLD) received from 28
|
||||
2025/01/16 20:14:43 [notice] 1#1: worker process 28 exited with code 0
|
||||
2025/01/16 20:14:43 [notice] 1#1: worker process 34 exited with code 0
|
||||
2025/01/16 20:14:43 [notice] 1#1: worker process 39 exited with code 0
|
||||
2025/01/16 20:14:43 [notice] 1#1: signal 29 (SIGIO) received
|
||||
2025/01/16 20:14:43 [notice] 1#1: signal 17 (SIGCHLD) received from 34
|
||||
2025/01/16 20:14:43 [notice] 1#1: worker process 30 exited with code 0
|
||||
2025/01/16 20:14:43 [notice] 1#1: signal 29 (SIGIO) received
|
||||
2025/01/16 20:14:43 [notice] 1#1: signal 17 (SIGCHLD) received from 32
|
||||
2025/01/16 20:14:43 [notice] 1#1: worker process 32 exited with code 0
|
||||
2025/01/16 20:14:43 [notice] 1#1: worker process 40 exited with code 0
|
||||
2025/01/16 20:14:43 [notice] 1#1: signal 29 (SIGIO) received
|
||||
2025/01/16 20:14:43 [notice] 1#1: signal 17 (SIGCHLD) received from 40
|
||||
2025/01/16 20:14:43 [notice] 1#1: worker process 37 exited with code 0
|
||||
2025/01/16 20:14:43 [notice] 1#1: exit
|
||||
2025/01/23 12:06:58 [notice] 1#1: using the "epoll" event method
|
||||
2025/01/23 12:06:58 [notice] 1#1: nginx/1.27.3
|
||||
2025/01/23 12:06:58 [notice] 1#1: built by gcc 12.2.0 (Debian 12.2.0-14)
|
||||
2025/01/23 12:06:58 [notice] 1#1: OS: Linux 6.10.14-linuxkit
|
||||
2025/01/23 12:06:58 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
|
||||
2025/01/23 12:06:58 [notice] 1#1: start worker processes
|
||||
2025/01/23 12:06:58 [notice] 1#1: start worker process 27
|
||||
2025/01/23 12:06:58 [notice] 1#1: start worker process 28
|
||||
2025/01/23 12:06:58 [notice] 1#1: start worker process 29
|
||||
2025/01/23 12:06:58 [notice] 1#1: start worker process 30
|
||||
2025/01/23 12:06:58 [notice] 1#1: start worker process 31
|
||||
2025/01/23 12:06:58 [notice] 1#1: start worker process 32
|
||||
2025/01/23 12:06:58 [notice] 1#1: start worker process 33
|
||||
2025/01/23 12:06:58 [notice] 1#1: start worker process 34
|
||||
2025/01/23 12:06:58 [notice] 1#1: start worker process 35
|
||||
2025/01/23 12:06:58 [notice] 1#1: start worker process 36
|
||||
2025/01/23 12:06:58 [notice] 1#1: start worker process 37
|
||||
2025/01/23 12:06:58 [notice] 1#1: start worker process 38
|
||||
2025/01/23 12:06:58 [notice] 1#1: start worker process 39
|
||||
2025/01/23 12:06:58 [notice] 1#1: start worker process 40
|
||||
2025/01/23 19:02:59 [notice] 1#1: signal 3 (SIGQUIT) received, shutting down
|
||||
2025/01/23 19:02:59 [notice] 27#27: gracefully shutting down
|
||||
2025/01/23 19:02:59 [notice] 29#29: gracefully shutting down
|
||||
2025/01/23 19:02:59 [notice] 30#30: gracefully shutting down
|
||||
2025/01/23 19:02:59 [notice] 31#31: gracefully shutting down
|
||||
2025/01/23 19:02:59 [notice] 28#28: gracefully shutting down
|
||||
2025/01/23 19:02:59 [notice] 32#32: gracefully shutting down
|
||||
2025/01/23 19:02:59 [notice] 34#34: gracefully shutting down
|
||||
2025/01/23 19:02:59 [notice] 35#35: gracefully shutting down
|
||||
2025/01/23 19:02:59 [notice] 39#39: gracefully shutting down
|
||||
2025/01/23 19:02:59 [notice] 38#38: gracefully shutting down
|
||||
2025/01/23 19:02:59 [notice] 40#40: gracefully shutting down
|
||||
2025/01/23 19:02:59 [notice] 33#33: gracefully shutting down
|
||||
2025/01/23 19:02:59 [notice] 36#36: gracefully shutting down
|
||||
2025/01/23 19:02:59 [notice] 37#37: gracefully shutting down
|
||||
2025/01/23 19:02:59 [notice] 27#27: exiting
|
||||
2025/01/23 19:02:59 [notice] 29#29: exiting
|
||||
2025/01/23 19:02:59 [notice] 30#30: exiting
|
||||
2025/01/23 19:02:59 [notice] 28#28: exiting
|
||||
2025/01/23 19:02:59 [notice] 28#28: exit
|
||||
2025/01/23 19:02:59 [notice] 31#31: exiting
|
||||
2025/01/23 19:02:59 [notice] 34#34: exiting
|
||||
2025/01/23 19:02:59 [notice] 32#32: exiting
|
||||
2025/01/23 19:02:59 [notice] 35#35: exiting
|
||||
2025/01/23 19:02:59 [notice] 39#39: exiting
|
||||
2025/01/23 19:02:59 [notice] 38#38: exiting
|
||||
2025/01/23 19:02:59 [notice] 40#40: exiting
|
||||
2025/01/23 19:02:59 [notice] 33#33: exiting
|
||||
2025/01/23 19:02:59 [notice] 36#36: exiting
|
||||
2025/01/23 19:02:59 [notice] 37#37: exiting
|
||||
2025/01/23 19:02:59 [notice] 27#27: exit
|
||||
2025/01/23 19:02:59 [notice] 29#29: exit
|
||||
2025/01/23 19:02:59 [notice] 30#30: exit
|
||||
2025/01/23 19:02:59 [notice] 31#31: exit
|
||||
2025/01/23 19:02:59 [notice] 34#34: exit
|
||||
2025/01/23 19:02:59 [notice] 32#32: exit
|
||||
2025/01/23 19:02:59 [notice] 35#35: exit
|
||||
2025/01/23 19:02:59 [notice] 39#39: exit
|
||||
2025/01/23 19:02:59 [notice] 38#38: exit
|
||||
2025/01/23 19:02:59 [notice] 40#40: exit
|
||||
2025/01/23 19:02:59 [notice] 33#33: exit
|
||||
2025/01/23 19:02:59 [notice] 36#36: exit
|
||||
2025/01/23 19:02:59 [notice] 37#37: exit
|
||||
2025/01/23 19:02:59 [notice] 1#1: signal 17 (SIGCHLD) received from 32
|
||||
2025/01/23 19:02:59 [notice] 1#1: worker process 31 exited with code 0
|
||||
2025/01/23 19:02:59 [notice] 1#1: worker process 27 exited with code 0
|
||||
2025/01/23 19:02:59 [notice] 1#1: worker process 28 exited with code 0
|
||||
2025/01/23 19:02:59 [notice] 1#1: worker process 30 exited with code 0
|
||||
2025/01/23 19:02:59 [notice] 1#1: worker process 32 exited with code 0
|
||||
2025/01/23 19:02:59 [notice] 1#1: signal 29 (SIGIO) received
|
||||
2025/01/23 19:02:59 [notice] 1#1: signal 17 (SIGCHLD) received from 31
|
||||
2025/01/23 19:02:59 [notice] 1#1: worker process 29 exited with code 0
|
||||
2025/01/23 19:02:59 [notice] 1#1: worker process 35 exited with code 0
|
||||
2025/01/23 19:02:59 [notice] 1#1: signal 29 (SIGIO) received
|
||||
2025/01/23 19:02:59 [notice] 1#1: signal 17 (SIGCHLD) received from 40
|
||||
2025/01/23 19:02:59 [notice] 1#1: worker process 37 exited with code 0
|
||||
2025/01/23 19:02:59 [notice] 1#1: worker process 39 exited with code 0
|
||||
2025/01/23 19:02:59 [notice] 1#1: worker process 40 exited with code 0
|
||||
2025/01/23 19:02:59 [notice] 1#1: signal 29 (SIGIO) received
|
||||
2025/01/23 19:02:59 [notice] 1#1: signal 17 (SIGCHLD) received from 37
|
||||
2025/01/23 19:02:59 [notice] 1#1: signal 17 (SIGCHLD) received from 36
|
||||
2025/01/23 19:02:59 [notice] 1#1: worker process 36 exited with code 0
|
||||
2025/01/23 19:02:59 [notice] 1#1: signal 29 (SIGIO) received
|
||||
2025/01/23 19:02:59 [notice] 1#1: signal 17 (SIGCHLD) received from 33
|
||||
2025/01/23 19:02:59 [notice] 1#1: worker process 33 exited with code 0
|
||||
2025/01/23 19:02:59 [notice] 1#1: worker process 34 exited with code 0
|
||||
2025/01/23 19:02:59 [notice] 1#1: worker process 38 exited with code 0
|
||||
2025/01/23 19:02:59 [notice] 1#1: exit
|
||||
2025/01/30 11:39:16 [notice] 1#1: using the "epoll" event method
|
||||
2025/01/30 11:39:16 [notice] 1#1: nginx/1.27.3
|
||||
2025/01/30 11:39:16 [notice] 1#1: built by gcc 12.2.0 (Debian 12.2.0-14)
|
||||
2025/01/30 11:39:16 [notice] 1#1: OS: Linux 6.10.14-linuxkit
|
||||
2025/01/30 11:39:16 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
|
||||
2025/01/30 11:39:16 [notice] 1#1: start worker processes
|
||||
2025/01/30 11:39:16 [notice] 1#1: start worker process 28
|
||||
2025/01/30 11:39:16 [notice] 1#1: start worker process 29
|
||||
2025/01/30 11:39:16 [notice] 1#1: start worker process 30
|
||||
2025/01/30 11:39:16 [notice] 1#1: start worker process 31
|
||||
2025/01/30 11:39:16 [notice] 1#1: start worker process 32
|
||||
2025/01/30 11:39:16 [notice] 1#1: start worker process 33
|
||||
2025/01/30 11:39:16 [notice] 1#1: start worker process 34
|
||||
2025/01/30 11:39:16 [notice] 1#1: start worker process 35
|
||||
2025/01/30 11:39:16 [notice] 1#1: start worker process 36
|
||||
2025/01/30 11:39:16 [notice] 1#1: start worker process 37
|
||||
2025/01/30 11:39:16 [notice] 1#1: start worker process 38
|
||||
2025/01/30 11:39:16 [notice] 1#1: start worker process 39
|
||||
2025/01/30 11:39:16 [notice] 1#1: start worker process 40
|
||||
2025/01/30 11:39:16 [notice] 1#1: start worker process 41
|
||||
2025/01/30 15:59:33 [notice] 1#1: signal 3 (SIGQUIT) received, shutting down
|
||||
2025/01/30 15:59:33 [notice] 32#32: gracefully shutting down
|
||||
2025/01/30 15:59:33 [notice] 31#31: gracefully shutting down
|
||||
2025/01/30 15:59:33 [notice] 37#37: gracefully shutting down
|
||||
2025/01/30 15:59:33 [notice] 30#30: gracefully shutting down
|
||||
2025/01/30 15:59:33 [notice] 33#33: gracefully shutting down
|
||||
2025/01/30 15:59:33 [notice] 29#29: gracefully shutting down
|
||||
2025/01/30 15:59:33 [notice] 28#28: gracefully shutting down
|
||||
2025/01/30 15:59:33 [notice] 32#32: exiting
|
||||
2025/01/30 15:59:33 [notice] 34#34: gracefully shutting down
|
||||
2025/01/30 15:59:33 [notice] 39#39: gracefully shutting down
|
||||
2025/01/30 15:59:33 [notice] 35#35: gracefully shutting down
|
||||
2025/01/30 15:59:33 [notice] 38#38: gracefully shutting down
|
||||
2025/01/30 15:59:33 [notice] 40#40: gracefully shutting down
|
||||
2025/01/30 15:59:33 [notice] 36#36: gracefully shutting down
|
||||
2025/01/30 15:59:33 [notice] 37#37: exiting
|
||||
2025/01/30 15:59:33 [notice] 31#31: exiting
|
||||
2025/01/30 15:59:33 [notice] 41#41: gracefully shutting down
|
||||
2025/01/30 15:59:33 [notice] 29#29: exiting
|
||||
2025/01/30 15:59:33 [notice] 28#28: exiting
|
||||
2025/01/30 15:59:33 [notice] 30#30: exiting
|
||||
2025/01/30 15:59:33 [notice] 33#33: exiting
|
||||
2025/01/30 15:59:33 [notice] 34#34: exiting
|
||||
2025/01/30 15:59:33 [notice] 35#35: exiting
|
||||
2025/01/30 15:59:33 [notice] 32#32: exit
|
||||
2025/01/30 15:59:33 [notice] 39#39: exiting
|
||||
2025/01/30 15:59:33 [notice] 36#36: exiting
|
||||
2025/01/30 15:59:33 [notice] 37#37: exit
|
||||
2025/01/30 15:59:33 [notice] 40#40: exiting
|
||||
2025/01/30 15:59:33 [notice] 31#31: exit
|
||||
2025/01/30 15:59:33 [notice] 38#38: exiting
|
||||
2025/01/30 15:59:33 [notice] 41#41: exiting
|
||||
2025/01/30 15:59:33 [notice] 29#29: exit
|
||||
2025/01/30 15:59:33 [notice] 30#30: exit
|
||||
2025/01/30 15:59:33 [notice] 28#28: exit
|
||||
2025/01/30 15:59:33 [notice] 33#33: exit
|
||||
2025/01/30 15:59:33 [notice] 34#34: exit
|
||||
2025/01/30 15:59:33 [notice] 35#35: exit
|
||||
2025/01/30 15:59:33 [notice] 39#39: exit
|
||||
2025/01/30 15:59:33 [notice] 36#36: exit
|
||||
2025/01/30 15:59:33 [notice] 40#40: exit
|
||||
2025/01/30 15:59:33 [notice] 38#38: exit
|
||||
2025/01/30 15:59:33 [notice] 41#41: exit
|
||||
2025/01/30 15:59:34 [notice] 1#1: signal 17 (SIGCHLD) received from 31
|
||||
2025/01/30 15:59:34 [notice] 1#1: worker process 28 exited with code 0
|
||||
2025/01/30 15:59:34 [notice] 1#1: worker process 29 exited with code 0
|
||||
2025/01/30 15:59:34 [notice] 1#1: worker process 30 exited with code 0
|
||||
2025/01/30 15:59:34 [notice] 1#1: worker process 31 exited with code 0
|
||||
2025/01/30 15:59:34 [notice] 1#1: worker process 32 exited with code 0
|
||||
2025/01/30 15:59:34 [notice] 1#1: worker process 33 exited with code 0
|
||||
2025/01/30 15:59:34 [notice] 1#1: worker process 34 exited with code 0
|
||||
2025/01/30 15:59:34 [notice] 1#1: worker process 37 exited with code 0
|
||||
2025/01/30 15:59:34 [notice] 1#1: worker process 38 exited with code 0
|
||||
2025/01/30 15:59:34 [notice] 1#1: worker process 39 exited with code 0
|
||||
2025/01/30 15:59:34 [notice] 1#1: worker process 40 exited with code 0
|
||||
2025/01/30 15:59:34 [notice] 1#1: signal 29 (SIGIO) received
|
||||
2025/01/30 15:59:34 [notice] 1#1: signal 17 (SIGCHLD) received from 40
|
||||
2025/01/30 15:59:34 [notice] 1#1: signal 17 (SIGCHLD) received from 35
|
||||
2025/01/30 15:59:34 [notice] 1#1: worker process 35 exited with code 0
|
||||
2025/01/30 15:59:34 [notice] 1#1: signal 29 (SIGIO) received
|
||||
2025/01/30 15:59:34 [notice] 1#1: signal 17 (SIGCHLD) received from 36
|
||||
2025/01/30 15:59:34 [notice] 1#1: worker process 36 exited with code 0
|
||||
2025/01/30 15:59:34 [notice] 1#1: signal 29 (SIGIO) received
|
||||
2025/01/30 15:59:34 [notice] 1#1: signal 17 (SIGCHLD) received from 41
|
||||
2025/01/30 15:59:34 [notice] 1#1: worker process 41 exited with code 0
|
||||
2025/01/30 15:59:34 [notice] 1#1: exit
|
||||
2025/01/30 16:19:09 [notice] 1#1: using the "epoll" event method
|
||||
2025/01/30 16:19:09 [notice] 1#1: nginx/1.27.3
|
||||
2025/01/30 16:19:09 [notice] 1#1: built by gcc 12.2.0 (Debian 12.2.0-14)
|
||||
2025/01/30 16:19:09 [notice] 1#1: OS: Linux 6.10.14-linuxkit
|
||||
2025/01/30 16:19:09 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
|
||||
2025/01/30 16:19:09 [notice] 1#1: start worker processes
|
||||
2025/01/30 16:19:09 [notice] 1#1: start worker process 28
|
||||
2025/01/30 16:19:09 [notice] 1#1: start worker process 29
|
||||
2025/01/30 16:19:09 [notice] 1#1: start worker process 30
|
||||
2025/01/30 16:19:09 [notice] 1#1: start worker process 31
|
||||
2025/01/30 16:19:09 [notice] 1#1: start worker process 32
|
||||
2025/01/30 16:19:09 [notice] 1#1: start worker process 33
|
||||
2025/01/30 16:19:09 [notice] 1#1: start worker process 34
|
||||
2025/01/30 16:19:09 [notice] 1#1: start worker process 35
|
||||
2025/01/30 16:19:09 [notice] 1#1: start worker process 36
|
||||
2025/01/30 16:19:09 [notice] 1#1: start worker process 37
|
||||
2025/01/30 16:19:09 [notice] 1#1: start worker process 38
|
||||
2025/01/30 16:19:09 [notice] 1#1: start worker process 39
|
||||
2025/01/30 16:19:09 [notice] 1#1: start worker process 40
|
||||
2025/01/30 16:19:09 [notice] 1#1: start worker process 41
|
||||
2025/01/31 09:13:39 [notice] 1#1: signal 3 (SIGQUIT) received, shutting down
|
||||
2025/01/31 09:13:39 [notice] 28#28: gracefully shutting down
|
||||
2025/01/31 09:13:39 [notice] 34#34: gracefully shutting down
|
||||
2025/01/31 09:13:39 [notice] 31#31: gracefully shutting down
|
||||
2025/01/31 09:13:39 [notice] 38#38: gracefully shutting down
|
||||
2025/01/31 09:13:39 [notice] 30#30: gracefully shutting down
|
||||
2025/01/31 09:13:39 [notice] 29#29: gracefully shutting down
|
||||
2025/01/31 09:13:39 [notice] 32#32: gracefully shutting down
|
||||
2025/01/31 09:13:39 [notice] 33#33: gracefully shutting down
|
||||
2025/01/31 09:13:39 [notice] 35#35: gracefully shutting down
|
||||
2025/01/31 09:13:39 [notice] 37#37: gracefully shutting down
|
||||
2025/01/31 09:13:39 [notice] 36#36: gracefully shutting down
|
||||
2025/01/31 09:13:39 [notice] 40#40: gracefully shutting down
|
||||
2025/01/31 09:13:39 [notice] 41#41: gracefully shutting down
|
||||
2025/01/31 09:13:39 [notice] 39#39: gracefully shutting down
|
||||
2025/01/31 09:13:39 [notice] 31#31: exiting
|
||||
2025/01/31 09:13:39 [notice] 28#28: exiting
|
||||
2025/01/31 09:13:39 [notice] 34#34: exiting
|
||||
2025/01/31 09:13:39 [notice] 38#38: exiting
|
||||
2025/01/31 09:13:39 [notice] 30#30: exiting
|
||||
2025/01/31 09:13:39 [notice] 29#29: exiting
|
||||
2025/01/31 09:13:39 [notice] 32#32: exiting
|
||||
2025/01/31 09:13:39 [notice] 33#33: exiting
|
||||
2025/01/31 09:13:39 [notice] 37#37: exiting
|
||||
2025/01/31 09:13:39 [notice] 35#35: exiting
|
||||
2025/01/31 09:13:39 [notice] 36#36: exiting
|
||||
2025/01/31 09:13:39 [notice] 36#36: exit
|
||||
2025/01/31 09:13:39 [notice] 40#40: exiting
|
||||
2025/01/31 09:13:39 [notice] 41#41: exiting
|
||||
2025/01/31 09:13:39 [notice] 39#39: exiting
|
||||
2025/01/31 09:13:39 [notice] 38#38: exit
|
||||
2025/01/31 09:13:39 [notice] 34#34: exit
|
||||
2025/01/31 09:13:39 [notice] 29#29: exit
|
||||
2025/01/31 09:13:39 [notice] 31#31: exit
|
||||
2025/01/31 09:13:39 [notice] 28#28: exit
|
||||
2025/01/31 09:13:39 [notice] 30#30: exit
|
||||
2025/01/31 09:13:39 [notice] 33#33: exit
|
||||
2025/01/31 09:13:39 [notice] 37#37: exit
|
||||
2025/01/31 09:13:39 [notice] 32#32: exit
|
||||
2025/01/31 09:13:39 [notice] 35#35: exit
|
||||
2025/01/31 09:13:39 [notice] 40#40: exit
|
||||
2025/01/31 09:13:39 [notice] 41#41: exit
|
||||
2025/01/31 09:13:39 [notice] 39#39: exit
|
||||
2025/01/31 09:13:40 [notice] 1#1: signal 17 (SIGCHLD) received from 28
|
||||
2025/01/31 09:13:40 [notice] 1#1: worker process 28 exited with code 0
|
||||
2025/01/31 09:13:40 [notice] 1#1: worker process 30 exited with code 0
|
||||
2025/01/31 09:13:40 [notice] 1#1: worker process 31 exited with code 0
|
||||
2025/01/31 09:13:40 [notice] 1#1: worker process 32 exited with code 0
|
||||
2025/01/31 09:13:40 [notice] 1#1: worker process 35 exited with code 0
|
||||
2025/01/31 09:13:40 [notice] 1#1: worker process 36 exited with code 0
|
||||
2025/01/31 09:13:40 [notice] 1#1: worker process 37 exited with code 0
|
||||
2025/01/31 09:13:40 [notice] 1#1: signal 29 (SIGIO) received
|
||||
2025/01/31 09:13:40 [notice] 1#1: signal 17 (SIGCHLD) received from 33
|
||||
2025/01/31 09:13:40 [notice] 1#1: worker process 33 exited with code 0
|
||||
2025/01/31 09:13:40 [notice] 1#1: worker process 29 exited with code 0
|
||||
2025/01/31 09:13:40 [notice] 1#1: worker process 34 exited with code 0
|
||||
2025/01/31 09:13:40 [notice] 1#1: worker process 38 exited with code 0
|
||||
2025/01/31 09:13:40 [notice] 1#1: worker process 39 exited with code 0
|
||||
2025/01/31 09:13:40 [notice] 1#1: worker process 40 exited with code 0
|
||||
2025/01/31 09:13:40 [notice] 1#1: worker process 41 exited with code 0
|
||||
2025/01/31 09:13:40 [notice] 1#1: exit
|
||||
2025/01/31 13:27:19 [notice] 1#1: using the "epoll" event method
|
||||
2025/01/31 13:27:19 [notice] 1#1: nginx/1.27.3
|
||||
2025/01/31 13:27:19 [notice] 1#1: built by gcc 12.2.0 (Debian 12.2.0-14)
|
||||
2025/01/31 13:27:19 [notice] 1#1: OS: Linux 6.10.14-linuxkit
|
||||
2025/01/31 13:27:19 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
|
||||
2025/01/31 13:27:19 [notice] 1#1: start worker processes
|
||||
2025/01/31 13:27:19 [notice] 1#1: start worker process 28
|
||||
2025/01/31 13:27:19 [notice] 1#1: start worker process 29
|
||||
2025/01/31 13:27:19 [notice] 1#1: start worker process 30
|
||||
2025/01/31 13:27:19 [notice] 1#1: start worker process 31
|
||||
2025/01/31 13:27:19 [notice] 1#1: start worker process 32
|
||||
2025/01/31 13:27:19 [notice] 1#1: start worker process 33
|
||||
2025/01/31 13:27:19 [notice] 1#1: start worker process 34
|
||||
2025/01/31 13:27:19 [notice] 1#1: start worker process 35
|
||||
2025/01/31 13:27:19 [notice] 1#1: start worker process 36
|
||||
2025/01/31 13:27:19 [notice] 1#1: start worker process 37
|
||||
2025/01/31 13:27:19 [notice] 1#1: start worker process 38
|
||||
2025/01/31 13:27:19 [notice] 1#1: start worker process 39
|
||||
2025/01/31 13:27:19 [notice] 1#1: start worker process 40
|
||||
2025/01/31 13:27:19 [notice] 1#1: start worker process 41
|
||||
2025/01/31 13:28:14 [notice] 1#1: signal 3 (SIGQUIT) received, shutting down
|
||||
2025/01/31 13:28:14 [notice] 30#30: gracefully shutting down
|
||||
2025/01/31 13:28:14 [notice] 29#29: gracefully shutting down
|
||||
2025/01/31 13:28:14 [notice] 28#28: gracefully shutting down
|
||||
2025/01/31 13:28:14 [notice] 32#32: gracefully shutting down
|
||||
2025/01/31 13:28:14 [notice] 33#33: gracefully shutting down
|
||||
2025/01/31 13:28:14 [notice] 31#31: gracefully shutting down
|
||||
2025/01/31 13:28:14 [notice] 36#36: gracefully shutting down
|
||||
2025/01/31 13:28:14 [notice] 35#35: gracefully shutting down
|
||||
2025/01/31 13:28:14 [notice] 35#35: exiting
|
||||
2025/01/31 13:28:14 [notice] 38#38: gracefully shutting down
|
||||
2025/01/31 13:28:14 [notice] 34#34: gracefully shutting down
|
||||
2025/01/31 13:28:14 [notice] 37#37: gracefully shutting down
|
||||
2025/01/31 13:28:14 [notice] 39#39: gracefully shutting down
|
||||
2025/01/31 13:28:14 [notice] 41#41: gracefully shutting down
|
||||
2025/01/31 13:28:14 [notice] 40#40: gracefully shutting down
|
||||
2025/01/31 13:28:14 [notice] 30#30: exiting
|
||||
2025/01/31 13:28:14 [notice] 29#29: exiting
|
||||
2025/01/31 13:28:14 [notice] 28#28: exiting
|
||||
2025/01/31 13:28:14 [notice] 32#32: exiting
|
||||
2025/01/31 13:28:14 [notice] 33#33: exiting
|
||||
2025/01/31 13:28:14 [notice] 31#31: exiting
|
||||
2025/01/31 13:28:14 [notice] 36#36: exiting
|
||||
2025/01/31 13:28:14 [notice] 35#35: exit
|
||||
2025/01/31 13:28:14 [notice] 38#38: exiting
|
||||
2025/01/31 13:28:14 [notice] 34#34: exiting
|
||||
2025/01/31 13:28:14 [notice] 37#37: exiting
|
||||
2025/01/31 13:28:14 [notice] 39#39: exiting
|
||||
2025/01/31 13:28:14 [notice] 41#41: exiting
|
||||
2025/01/31 13:28:14 [notice] 40#40: exiting
|
||||
2025/01/31 13:28:14 [notice] 30#30: exit
|
||||
2025/01/31 13:28:14 [notice] 29#29: exit
|
||||
2025/01/31 13:28:14 [notice] 28#28: exit
|
||||
2025/01/31 13:28:14 [notice] 32#32: exit
|
||||
2025/01/31 13:28:14 [notice] 33#33: exit
|
||||
2025/01/31 13:28:14 [notice] 31#31: exit
|
||||
2025/01/31 13:28:14 [notice] 36#36: exit
|
||||
2025/01/31 13:28:14 [notice] 38#38: exit
|
||||
2025/01/31 13:28:14 [notice] 34#34: exit
|
||||
2025/01/31 13:28:14 [notice] 37#37: exit
|
||||
2025/01/31 13:28:14 [notice] 39#39: exit
|
||||
2025/01/31 13:28:14 [notice] 41#41: exit
|
||||
2025/01/31 13:28:14 [notice] 40#40: exit
|
||||
2025/01/31 13:28:14 [notice] 1#1: signal 17 (SIGCHLD) received from 32
|
||||
2025/01/31 13:28:14 [notice] 1#1: worker process 32 exited with code 0
|
||||
2025/01/31 13:28:14 [notice] 1#1: worker process 35 exited with code 0
|
||||
2025/01/31 13:28:14 [notice] 1#1: worker process 41 exited with code 0
|
||||
2025/01/31 13:28:15 [notice] 1#1: signal 29 (SIGIO) received
|
||||
2025/01/31 13:28:15 [notice] 1#1: signal 17 (SIGCHLD) received from 35
|
||||
2025/01/31 13:28:15 [notice] 1#1: worker process 28 exited with code 0
|
||||
2025/01/31 13:28:15 [notice] 1#1: worker process 30 exited with code 0
|
||||
2025/01/31 13:28:15 [notice] 1#1: worker process 33 exited with code 0
|
||||
2025/01/31 13:28:15 [notice] 1#1: signal 29 (SIGIO) received
|
||||
2025/01/31 13:28:15 [notice] 1#1: signal 17 (SIGCHLD) received from 28
|
||||
2025/01/31 13:28:15 [notice] 1#1: worker process 29 exited with code 0
|
||||
2025/01/31 13:28:15 [notice] 1#1: signal 29 (SIGIO) received
|
||||
2025/01/31 13:28:15 [notice] 1#1: signal 17 (SIGCHLD) received from 29
|
||||
2025/01/31 13:28:15 [notice] 1#1: worker process 31 exited with code 0
|
||||
2025/01/31 13:28:15 [notice] 1#1: worker process 36 exited with code 0
|
||||
2025/01/31 13:28:15 [notice] 1#1: signal 29 (SIGIO) received
|
||||
2025/01/31 13:28:15 [notice] 1#1: signal 17 (SIGCHLD) received from 31
|
||||
2025/01/31 13:28:15 [notice] 1#1: worker process 38 exited with code 0
|
||||
2025/01/31 13:28:15 [notice] 1#1: signal 29 (SIGIO) received
|
||||
2025/01/31 13:28:15 [notice] 1#1: signal 17 (SIGCHLD) received from 34
|
||||
2025/01/31 13:28:15 [notice] 1#1: worker process 34 exited with code 0
|
||||
2025/01/31 13:28:15 [notice] 1#1: worker process 40 exited with code 0
|
||||
2025/01/31 13:28:15 [notice] 1#1: signal 29 (SIGIO) received
|
||||
2025/01/31 13:28:15 [notice] 1#1: signal 17 (SIGCHLD) received from 40
|
||||
2025/01/31 13:28:15 [notice] 1#1: worker process 39 exited with code 0
|
||||
2025/01/31 13:28:15 [notice] 1#1: signal 29 (SIGIO) received
|
||||
2025/01/31 13:28:15 [notice] 1#1: signal 17 (SIGCHLD) received from 39
|
||||
2025/01/31 13:28:15 [notice] 1#1: signal 17 (SIGCHLD) received from 37
|
||||
2025/01/31 13:28:15 [notice] 1#1: worker process 37 exited with code 0
|
||||
2025/01/31 13:28:15 [notice] 1#1: exit
|
||||
2025/02/06 12:05:55 [notice] 1#1: using the "epoll" event method
|
||||
2025/02/06 12:05:55 [notice] 1#1: nginx/1.27.3
|
||||
2025/02/06 12:05:55 [notice] 1#1: built by gcc 12.2.0 (Debian 12.2.0-14)
|
||||
2025/02/06 12:05:55 [notice] 1#1: OS: Linux 6.10.14-linuxkit
|
||||
2025/02/06 12:05:55 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
|
||||
2025/02/06 12:05:55 [notice] 1#1: start worker processes
|
||||
2025/02/06 12:05:55 [notice] 1#1: start worker process 28
|
||||
2025/02/06 12:05:55 [notice] 1#1: start worker process 29
|
||||
2025/02/06 12:05:55 [notice] 1#1: start worker process 30
|
||||
2025/02/06 12:05:55 [notice] 1#1: start worker process 31
|
||||
2025/02/06 12:05:55 [notice] 1#1: start worker process 32
|
||||
2025/02/06 12:05:55 [notice] 1#1: start worker process 33
|
||||
2025/02/06 12:05:55 [notice] 1#1: start worker process 34
|
||||
2025/02/06 12:05:55 [notice] 1#1: start worker process 35
|
||||
2025/02/06 12:05:55 [notice] 1#1: start worker process 36
|
||||
2025/02/06 12:05:55 [notice] 1#1: start worker process 37
|
||||
2025/02/06 12:05:55 [notice] 1#1: start worker process 38
|
||||
2025/02/06 12:05:55 [notice] 1#1: start worker process 39
|
||||
2025/02/06 12:05:55 [notice] 1#1: start worker process 40
|
||||
2025/02/06 12:05:55 [notice] 1#1: start worker process 41
|
||||
|
BIN
js_workshop6/favicon.ico
Normal file
After Width: | Height: | Size: 165 KiB |
54
js_workshop6/index.html
Normal file
@@ -0,0 +1,54 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>JS-Calc</title>
|
||||
<link href="favicon.ico" rel="icon">
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
|
||||
<link href="styles.css" rel="stylesheet">
|
||||
</head>
|
||||
|
||||
<body class="d-flex bg-secondary-subtle justify-content-center">
|
||||
<div class="p-0 container border rounded bg-white">
|
||||
<div id="titlebox" class="w-100">
|
||||
<h1 class="text-center mb-0 py-4 bg-dark-subtle shadow-sm">JS-Calc</h1>
|
||||
</div>
|
||||
<br>
|
||||
<div class="row mb-4 justify-content-center">
|
||||
<div class="col-md-8 d-flex flex-column gap-2">
|
||||
<div class="form-group form-floating shadow-sm">
|
||||
<input class="form-control" id='num1' type="text">
|
||||
<label for="num1">Number 1</label>
|
||||
</div>
|
||||
<div class="form-group form-floating shadow-sm">
|
||||
<select class="form-select" id="operator">
|
||||
<option selected value="add">Add (+)</option>
|
||||
<option value="minus">Minus (-)</option>
|
||||
<option value="mult">Mult (x)</option>
|
||||
<option value="div">Div (÷)</option>
|
||||
</select>
|
||||
<label for="operator">Operator</label>
|
||||
</div>
|
||||
<div class="form-group form-floating shadow-sm">
|
||||
<input class="form-control" id='num2' type="text">
|
||||
<label for="num2">Number 2</label>
|
||||
</div>
|
||||
<div class="form-group form-floating shadow-sm align-self-center">
|
||||
<button class="btn btn-primary" id="calculate">Calculate</button>
|
||||
</div>
|
||||
<div class="form-group form-floating shadow-sm">
|
||||
<input disabled class="form-control" id="result">
|
||||
<label for="result">Result</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous" defer></script>
|
||||
<script src="index.js" defer></script>
|
||||
</body>
|
||||
<footer class="bg-dark-subtle fixed-bottom">
|
||||
<div class="d-flex flex-row justify-content-center pt-3">
|
||||
<p>Made by George Wilkinson @ 2025. Powered by Bootstrap and JS.</p>
|
||||
</div>
|
||||
</footer>
|
||||
</html>
|
40
js_workshop6/index.js
Normal file
@@ -0,0 +1,40 @@
|
||||
|
||||
// Creates the Calculator Object
|
||||
function Calculator() {
|
||||
this.number1 = 0;
|
||||
this.number2 = 0;
|
||||
this.op = 'add';
|
||||
this.add = function() { return this.number1 + this.number2; }
|
||||
this.minus = function() { return this.number1 - this.number2; }
|
||||
this.multiply = function() { return this.number1 * this.number2; }
|
||||
this.divide = function() { return this.number1 / this.number2; }
|
||||
this.Calculate = function getResult() {
|
||||
if (this.op === 'add') return this.add();
|
||||
if (this.op === "mult") return this.multiply();
|
||||
if (this.op === "minus") return this.minus();
|
||||
if (this.op === "div") return this.divide()
|
||||
}
|
||||
}
|
||||
|
||||
// Create Event Listener for button
|
||||
document.getElementById('calculate').addEventListener('click', getResult, false);
|
||||
|
||||
// Instantiate Calculator
|
||||
let calculator = new Calculator();
|
||||
|
||||
// Validates input and sets disabled input box to result
|
||||
function getResult() {
|
||||
// handler function for the calcButton
|
||||
if (document.getElementById("num1").value === "") {
|
||||
// show error or make a page element show the error
|
||||
alert("Enter some values")
|
||||
return;
|
||||
}
|
||||
// Give object variables values.
|
||||
calculator.number1 = parseFloat(document.getElementById("num1").value);
|
||||
calculator.number2 = parseFloat(document.getElementById("num2").value);
|
||||
calculator.op = document.getElementById("operator").value;
|
||||
// This is pretty cool, + typecasts to Number, I multiply by 100, then divide by 100,
|
||||
// while avoiding rounding errors!
|
||||
document.getElementById('result').value = +(Math.round(calculator.Calculate() + "e+2") + "e-2");
|
||||
}
|
7
js_workshop6/styles.css
Normal file
@@ -0,0 +1,7 @@
|
||||
.container {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
width: 20% !important;
|
||||
box-shadow: 0 2px 10px rgba(0,0,0,0.3);
|
||||
}
|
BIN
js_workshop7/favicon.ico
Normal file
After Width: | Height: | Size: 165 KiB |
52
js_workshop7/index.html
Normal file
@@ -0,0 +1,52 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>JS-Calc</title>
|
||||
<link href="favicon.ico" rel="icon">
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
|
||||
<link href="styles.css" rel="stylesheet">
|
||||
</head>
|
||||
|
||||
<body class="d-flex bg-secondary-subtle justify-content-center">
|
||||
<div class="p-0 container border rounded bg-white">
|
||||
<div id="titlebox" class="w-100">
|
||||
<h1 class="text-center mb-0 py-4 bg-dark-subtle shadow-sm">JS-Calc</h1>
|
||||
</div>
|
||||
<div class="row m-3 justify-content-center">
|
||||
<div class="calculator p-3 border bg-secondary rounded-3">
|
||||
<div class="form-group form-floating">
|
||||
<input disabled class="form-control" type="text" value="0" id="result">
|
||||
<label for="result">Result</label>
|
||||
</div>
|
||||
<div class="buttons">
|
||||
<button class="btn is-clear span-2 btn-danger operator">C</button>
|
||||
<button class="btn btn-warning operator">←</button>
|
||||
<button class="btn btn-primary operator">÷</button>
|
||||
<button class="btn bg-white">7</button>
|
||||
<button class="btn bg-white">8</button>
|
||||
<button class="btn bg-white">9</button>
|
||||
<button class="btn btn-primary operator">x</button>
|
||||
<button class="btn bg-white">4</button>
|
||||
<button class="btn bg-white">5</button>
|
||||
<button class="btn bg-white">6</button>
|
||||
<button class="btn btn-primary">-</button>
|
||||
<button class="btn bg-white">1</button>
|
||||
<button class="btn bg-white">2</button>
|
||||
<button class="btn bg-white">3</button>
|
||||
<button class="btn btn-primary operator">+</button>
|
||||
<button class="btn bg-white span-3">0</button>
|
||||
<button class="btn btn-success operator">=</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous" defer></script>
|
||||
<script src="index.js" defer></script>
|
||||
</body>
|
||||
<footer class="bg-dark-subtle fixed-bottom">
|
||||
<div class="d-flex flex-row justify-content-center pt-3">
|
||||
<p>Made by George Wilkinson @ 2025. Powered by Bootstrap and JS.</p>
|
||||
</div>
|
||||
</footer>
|
||||
</html>
|
108
js_workshop7/index.js
Normal file
@@ -0,0 +1,108 @@
|
||||
// Creates the Calculator Object
|
||||
function Calculator() {
|
||||
// Set current and buffer values to 0
|
||||
this.current = 0;
|
||||
this.buffer = "0";
|
||||
// Set previous operator to null
|
||||
this.previousOperator = null;
|
||||
// When button is clicked, if not a number, buffer an operator
|
||||
// if a number, buffer the operand.
|
||||
this.buttonClicked = ( value ) => {
|
||||
if (isNaN(parseInt(value))) {
|
||||
calculator.bufferOperator(value);
|
||||
} else {
|
||||
calculator.bufferOperand(value);
|
||||
}
|
||||
// Push to value
|
||||
this.renderResult();
|
||||
}
|
||||
// Function to buffer an operator given a value
|
||||
this.bufferOperator = (value) =>
|
||||
{
|
||||
switch( value ) {
|
||||
// If the value is Clear, reset all values to default.
|
||||
case "C":
|
||||
this.buffer = "0";
|
||||
this.current = 0;
|
||||
this.previousOperator = null;
|
||||
break;
|
||||
// If the value is equals, set previous operator to null,
|
||||
// flush the operation using the typecasted buffer, and set
|
||||
// buffer to the current value in order to continue operations.
|
||||
// Finally set current value and previous operator to default.
|
||||
case "=":
|
||||
if( this.previousOperator === null ) {
|
||||
return;
|
||||
}
|
||||
this.flushOperation( parseInt( this.buffer ));
|
||||
this.buffer = "" + this.current;
|
||||
this.previousOperator = null;
|
||||
this.current = 0;
|
||||
break;
|
||||
// If value is backspace, delete the last digit in the buffer.
|
||||
case "←":
|
||||
if( this.buffer.length === 1 ) {
|
||||
this.buffer = 0;
|
||||
}
|
||||
else {
|
||||
this.buffer = this.buffer.substring( 0, this.buffer.length - 1 );
|
||||
}
|
||||
break;
|
||||
default:
|
||||
this.calculate( value );
|
||||
}
|
||||
}
|
||||
// Adds operand, given a value, to the buffer.
|
||||
this.bufferOperand = ( value ) =>
|
||||
{
|
||||
if( this.buffer === "0" )
|
||||
{
|
||||
this.buffer = value;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.buffer += value;
|
||||
}
|
||||
}
|
||||
// Performs operator functions depending on which operator was clicked.
|
||||
// Given a tempBuffer, perform the corresponding operation to the current value.
|
||||
this.flushOperation = ( tempBuffer ) => {
|
||||
if( this.previousOperator === "+" ) { this.current += tempBuffer}
|
||||
else if( this.previousOperator === "-" ) { this.current -= tempBuffer}
|
||||
else if( this.previousOperator === "x" ) { this.current *= tempBuffer}
|
||||
else { this.current /= tempBuffer}
|
||||
}
|
||||
// Given a value, create a temporary buffer equal to current buffer,
|
||||
// perform the corresponding operation, and reset operator and buffer to
|
||||
// default values.
|
||||
this.calculate = ( value ) => {
|
||||
const tempBuffer = parseInt( this.buffer );
|
||||
if ( this.current === 0 ) {
|
||||
this.current = tempBuffer;
|
||||
}
|
||||
else {
|
||||
this.flushOperation(tempBuffer)
|
||||
}
|
||||
this.previousOperator = value;
|
||||
this.buffer = "0";
|
||||
}
|
||||
// Exclusively called when a button is clicked, display a value
|
||||
// rounded to 4 decimal places in the result box.
|
||||
this.renderResult = () => {
|
||||
// Note: this is the proper way to round to decimal places. Math.round( ( x * 100 ) / 100 )
|
||||
// will almost always give rounding errors
|
||||
result.value = +(Math.round(this.buffer + 'e+4') + 'e-4');
|
||||
}
|
||||
}
|
||||
|
||||
// Instantiate Calculator
|
||||
let calculator = new Calculator();
|
||||
|
||||
// Create constant for result display HTML object
|
||||
const result = document.querySelector("#result");
|
||||
|
||||
// Create Event Listener for button
|
||||
document.querySelector( '.buttons' ).addEventListener( 'click', function( event ) {
|
||||
// Pass the value of the HTML button to the buttonClicked() function.
|
||||
calculator.buttonClicked( event.target.innerHTML );
|
||||
});
|
45
js_workshop7/styles.css
Normal file
@@ -0,0 +1,45 @@
|
||||
.container {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
width: 320px;
|
||||
box-shadow: 0 2px 10px rgba(0,0,0,0.3);
|
||||
}
|
||||
|
||||
.calculator{
|
||||
max-width:320px;
|
||||
}
|
||||
.buttons{
|
||||
display:grid;
|
||||
grid-template-columns: repeat(4,1fr);
|
||||
border:0;
|
||||
}
|
||||
#result {
|
||||
font-family: 'Monospaced', monospace ;
|
||||
background: black;
|
||||
color: white;
|
||||
font-size: 2em;
|
||||
border:0;
|
||||
padding: 0.3em;
|
||||
text-align: right;
|
||||
width: 100%;
|
||||
height: 100px;
|
||||
}
|
||||
|
||||
.btn {
|
||||
font-size:1em;
|
||||
height: 65px;
|
||||
border:1px solid black;
|
||||
margin: 1px;
|
||||
}
|
||||
|
||||
.btn:hover{
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.span-2 {
|
||||
grid-column: span 2;
|
||||
}
|
||||
.span-3 {
|
||||
grid-column: span 3;
|
||||
}
|
BIN
js_workshop8/SampleVideo.mp4
Normal file
42
js_workshop8/index.html
Normal file
@@ -0,0 +1,42 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>JS-Calc</title>
|
||||
<link href="favicon.ico" rel="icon">
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
|
||||
<link href="styles.css" rel="stylesheet">
|
||||
</head>
|
||||
|
||||
<body class="d-flex bg-secondary-subtle justify-content-center">
|
||||
<div id="playerContainer" class="p-0 container border rounded bg-white d-flex flex-column">
|
||||
<video id="video" class="img-fluid shadow">
|
||||
<source src="SampleVideo.mp4" type="video/mp4">
|
||||
<p>This video is not supported in your browser</p>
|
||||
</video>
|
||||
<div id="trackBar" class="bg-primary"></div>
|
||||
<div id="buttonContainer" class="container-fluid align-items-center d-flex gap-2">
|
||||
<button id="pauseplay" class="btn"></button>
|
||||
<div id="leftAlign" class="align-items-center ms-auto d-flex gap-3">
|
||||
<div id="durationWrapper" class="align-items-center d-flex gap-1">
|
||||
<p class="m-auto" id="durationElapsed"></p>
|
||||
<p class="m-auto">|</p>
|
||||
<p class="m-auto" id="durationTotal"></p>
|
||||
</div>
|
||||
<div id="volWrapper" class="align-items-center d-flex flex-row gap-2">
|
||||
<label id="volIco" for="volBar"></label>
|
||||
<input type="range" id="volBar" class="form-range w-100">
|
||||
</div>
|
||||
<button id="fullscreen" class="btn"></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous" defer></script>
|
||||
<script src="index.js"></script>
|
||||
</body>
|
||||
<footer class="bg-dark-subtle fixed-bottom">
|
||||
<div class="d-flex flex-row justify-content-center pt-3">
|
||||
<p>Made by George Wilkinson @ 2025. Powered by Bootstrap and JS.</p>
|
||||
</div>
|
||||
</footer>
|
||||
</html>
|
75
js_workshop8/index.js
Normal file
@@ -0,0 +1,75 @@
|
||||
|
||||
class VideoPlayer {
|
||||
constructor( video ) {
|
||||
this.fullscreenStatus = false;
|
||||
this.video = document.getElementById("video");
|
||||
this.playerContainer = document.getElementById("playerContainer");
|
||||
this.pausePlayBtn = document.getElementById("pauseplay");
|
||||
this.volBar = document.getElementById("volBar");
|
||||
this.volIco = document.getElementById('volIco')
|
||||
this.fullscreenBtn = document.getElementById('fullscreen');
|
||||
this.elapsed = document.getElementById('durationElapsed');
|
||||
this.total = document.getElementById('durationTotal');
|
||||
this.trackBar = document.getElementById("trackBar");
|
||||
}
|
||||
init() {
|
||||
this.pausePlayBtn.innerHTML = '\u23F5\uFE0E';
|
||||
this.fullscreenBtn.innerHTML = '\u26F6\uFE0E'
|
||||
this.volIco.innerHTML = '\u266A\uFE0E'
|
||||
this.total.innerHTML =
|
||||
Math.floor(this.video.duration % 3600 / 60).toString().padStart(2,'0') + ":" +
|
||||
Math.floor(this.video.duration % 60).toString().padStart(2,'0');
|
||||
this.elapsed.innerHTML = "0:00";
|
||||
this.pausePlayBtn.addEventListener('click', ( event ) => player.pausePlay( event.target.innerHTML ) );
|
||||
this.volBar.addEventListener( "change", ( event )=> player.changeVol( event.currentTarget.value ) );
|
||||
this.fullscreenBtn.addEventListener( 'click', () => player.fullscreen( player.playerContainer ) );
|
||||
}
|
||||
updateTrackbar() {
|
||||
this.trackBar.style.width = parseInt(( this.video.currentTime / this.video.duration ) * 100 ) + "%";
|
||||
this.elapsed.innerHTML =
|
||||
Math.floor(this.video.currentTime % 3600 / 60).toString().padStart(2,'0') + ":" +
|
||||
Math.floor(this.video.currentTime % 60).toString().padStart(2,'0');
|
||||
}
|
||||
pausePlay( value ) {
|
||||
switch( value ) {
|
||||
// Play Button
|
||||
case '\u23F5\uFE0E':
|
||||
this.play();
|
||||
break;
|
||||
// Pause Button
|
||||
case '\u23F8\uFE0E':
|
||||
this.pause()
|
||||
break;
|
||||
}
|
||||
};
|
||||
pause() {
|
||||
this.video.pause();
|
||||
this.pausePlayBtn.innerHTML = '\u23F5\uFE0E';
|
||||
this.intervalID = 0;
|
||||
};
|
||||
play() {
|
||||
this.video.play();
|
||||
this.pausePlayBtn.innerHTML = '\u23F8\uFE0E';
|
||||
this.intervalID = window.setInterval(() => this.updateTrackbar(), 500)
|
||||
};
|
||||
changeVol( newVolume ) {
|
||||
this.video.volume = newVolume / 100;
|
||||
}
|
||||
fullscreen( element ) {
|
||||
if( this.fullscreenStatus === false ) {
|
||||
element.requestFullscreen({navigationUI:'show'}).catch((e) => {
|
||||
alert(`Could not enter fullscreen: ${e.message} (${e.name})`);
|
||||
});
|
||||
this.fullscreenStatus = true;
|
||||
}
|
||||
else {
|
||||
document.exitFullscreen().catch((e) => {
|
||||
alert(`Could not exit fullscreen: ${e.message} (${e.name})`);
|
||||
});
|
||||
this.fullscreenStatus = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let player = new VideoPlayer();
|
||||
player.init();
|
46
js_workshop8/styles.css
Normal file
@@ -0,0 +1,46 @@
|
||||
.container {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
width: 640px;
|
||||
box-shadow: 0 2px 10px rgba(0,0,0,0.3);
|
||||
}
|
||||
|
||||
.container:fullscreen {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.container:fullscreen #video {
|
||||
height: 100%;
|
||||
}
|
||||
.container:fullscreen #buttonContainer {
|
||||
height: 5%;
|
||||
}
|
||||
|
||||
#volWrapper {
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
#leftAlign {
|
||||
align-self: flex-end;
|
||||
}
|
||||
|
||||
#video {
|
||||
object-fit: cover;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#buttonContainer {
|
||||
height: 10%;
|
||||
background: rgba(50, 50, 50, 0.8);
|
||||
}
|
||||
|
||||
#trackBar {
|
||||
width: 0;
|
||||
height: 4px;
|
||||
}
|
||||
|
||||
#buttonContainer * {
|
||||
color: white;
|
||||
}
|
92
nginx/php/fpm-php.www.log
Normal file → Executable file
@@ -0,0 +1,92 @@
|
||||
[06-Feb-2025 12:24:23 UTC] PHP Fatal error: Uncaught Error: Call to a member function prepare() on null in /var/www/ajax_workshop_2/Models/StudentsDataSet.php:17
|
||||
Stack trace:
|
||||
#0 /var/www/ajax_workshop_2/index.php(12): StudentsDataSet->fetchAllStudents()
|
||||
#1 {main}
|
||||
thrown in /var/www/ajax_workshop_2/Models/StudentsDataSet.php on line 17
|
||||
[06-Feb-2025 12:24:48 UTC] PHP Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 1 no such table: students in /var/www/ajax_workshop_2/Models/StudentsDataSet.php:17
|
||||
Stack trace:
|
||||
#0 /var/www/ajax_workshop_2/Models/StudentsDataSet.php(17): PDO->prepare('SELECT * FROM s...')
|
||||
#1 /var/www/ajax_workshop_2/index.php(12): StudentsDataSet->fetchAllStudents()
|
||||
#2 {main}
|
||||
thrown in /var/www/ajax_workshop_2/Models/StudentsDataSet.php on line 17
|
||||
[06-Feb-2025 12:26:09 UTC] PHP Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 1 no such table: students in /var/www/ajax_workshop_2/Models/StudentsDataSet.php:18
|
||||
Stack trace:
|
||||
#0 /var/www/ajax_workshop_2/Models/StudentsDataSet.php(18): PDO->prepare('SELECT * FROM s...')
|
||||
#1 /var/www/ajax_workshop_2/index.php(12): StudentsDataSet->fetchAllStudents()
|
||||
#2 {main}
|
||||
thrown in /var/www/ajax_workshop_2/Models/StudentsDataSet.php on line 18
|
||||
[06-Feb-2025 12:26:18 UTC] PHP Fatal error: Uncaught Error: Call to undefined method StudentData::getFirstName() in /var/www/ajax_workshop_2/Views/index.phtml:20
|
||||
Stack trace:
|
||||
#0 /var/www/ajax_workshop_2/index.php(25): require_once()
|
||||
#1 {main}
|
||||
thrown in /var/www/ajax_workshop_2/Views/index.phtml on line 20
|
||||
[06-Feb-2025 12:26:26 UTC] PHP Fatal error: Uncaught Error: Call to undefined method StudentData::getFirstName() in /var/www/ajax_workshop_2/Views/index.phtml:20
|
||||
Stack trace:
|
||||
#0 /var/www/ajax_workshop_2/index.php(25): require_once()
|
||||
#1 {main}
|
||||
thrown in /var/www/ajax_workshop_2/Views/index.phtml on line 20
|
||||
[06-Feb-2025 12:26:27 UTC] PHP Fatal error: Uncaught Error: Call to undefined method StudentData::getFirstName() in /var/www/ajax_workshop_2/Views/index.phtml:20
|
||||
Stack trace:
|
||||
#0 /var/www/ajax_workshop_2/index.php(25): require_once()
|
||||
#1 {main}
|
||||
thrown in /var/www/ajax_workshop_2/Views/index.phtml on line 20
|
||||
[06-Feb-2025 12:26:27 UTC] PHP Fatal error: Uncaught Error: Call to undefined method StudentData::getFirstName() in /var/www/ajax_workshop_2/Views/index.phtml:20
|
||||
Stack trace:
|
||||
#0 /var/www/ajax_workshop_2/index.php(25): require_once()
|
||||
#1 {main}
|
||||
thrown in /var/www/ajax_workshop_2/Views/index.phtml on line 20
|
||||
[06-Feb-2025 12:26:27 UTC] PHP Fatal error: Uncaught Error: Call to undefined method StudentData::getFirstName() in /var/www/ajax_workshop_2/Views/index.phtml:20
|
||||
Stack trace:
|
||||
#0 /var/www/ajax_workshop_2/index.php(25): require_once()
|
||||
#1 {main}
|
||||
thrown in /var/www/ajax_workshop_2/Views/index.phtml on line 20
|
||||
[06-Feb-2025 12:26:27 UTC] PHP Fatal error: Uncaught Error: Call to undefined method StudentData::getFirstName() in /var/www/ajax_workshop_2/Views/index.phtml:20
|
||||
Stack trace:
|
||||
#0 /var/www/ajax_workshop_2/index.php(25): require_once()
|
||||
#1 {main}
|
||||
thrown in /var/www/ajax_workshop_2/Views/index.phtml on line 20
|
||||
[06-Feb-2025 12:26:28 UTC] PHP Fatal error: Uncaught Error: Call to undefined method StudentData::getFirstName() in /var/www/ajax_workshop_2/Views/index.phtml:20
|
||||
Stack trace:
|
||||
#0 /var/www/ajax_workshop_2/index.php(25): require_once()
|
||||
#1 {main}
|
||||
thrown in /var/www/ajax_workshop_2/Views/index.phtml on line 20
|
||||
[06-Feb-2025 12:26:28 UTC] PHP Fatal error: Uncaught Error: Call to undefined method StudentData::getFirstName() in /var/www/ajax_workshop_2/Views/index.phtml:20
|
||||
Stack trace:
|
||||
#0 /var/www/ajax_workshop_2/index.php(25): require_once()
|
||||
#1 {main}
|
||||
thrown in /var/www/ajax_workshop_2/Views/index.phtml on line 20
|
||||
[06-Feb-2025 12:26:28 UTC] PHP Fatal error: Uncaught Error: Call to undefined method StudentData::getFirstName() in /var/www/ajax_workshop_2/Views/index.phtml:20
|
||||
Stack trace:
|
||||
#0 /var/www/ajax_workshop_2/index.php(25): require_once()
|
||||
#1 {main}
|
||||
thrown in /var/www/ajax_workshop_2/Views/index.phtml on line 20
|
||||
[06-Feb-2025 12:26:28 UTC] PHP Fatal error: Uncaught Error: Call to undefined method StudentData::getFirstName() in /var/www/ajax_workshop_2/Views/index.phtml:20
|
||||
Stack trace:
|
||||
#0 /var/www/ajax_workshop_2/index.php(25): require_once()
|
||||
#1 {main}
|
||||
thrown in /var/www/ajax_workshop_2/Views/index.phtml on line 20
|
||||
[06-Feb-2025 12:26:52 UTC] PHP Fatal error: Uncaught Error: Call to undefined method StudentData::getFirstName() in /var/www/ajax_workshop_2/Views/index.phtml:20
|
||||
Stack trace:
|
||||
#0 /var/www/ajax_workshop_2/index.php(25): require_once()
|
||||
#1 {main}
|
||||
thrown in /var/www/ajax_workshop_2/Views/index.phtml on line 20
|
||||
[06-Feb-2025 12:27:26 UTC] PHP Fatal error: Uncaught Error: Call to undefined method StudentData::getFirstName() in /var/www/ajax_workshop_2/Views/index.phtml:20
|
||||
Stack trace:
|
||||
#0 /var/www/ajax_workshop_2/index.php(25): require_once()
|
||||
#1 {main}
|
||||
thrown in /var/www/ajax_workshop_2/Views/index.phtml on line 20
|
||||
[06-Feb-2025 12:27:31 UTC] PHP Fatal error: Uncaught Error: Call to undefined method StudentData::getFirstName() in /var/www/ajax_workshop_2/Views/index.phtml:20
|
||||
Stack trace:
|
||||
#0 /var/www/ajax_workshop_2/index.php(25): require_once()
|
||||
#1 {main}
|
||||
thrown in /var/www/ajax_workshop_2/Views/index.phtml on line 20
|
||||
[06-Feb-2025 12:27:41 UTC] PHP Fatal error: Uncaught Error: Call to undefined method StudentData::getFirstName() in /var/www/ajax_workshop_2/Views/index.phtml:20
|
||||
Stack trace:
|
||||
#0 /var/www/ajax_workshop_2/index.php(25): require_once()
|
||||
#1 {main}
|
||||
thrown in /var/www/ajax_workshop_2/Views/index.phtml on line 20
|
||||
[06-Feb-2025 12:27:48 UTC] PHP Fatal error: Uncaught Error: Call to undefined method StudentData::getFirstName() in /var/www/ajax_workshop_2/Views/index.phtml:20
|
||||
Stack trace:
|
||||
#0 /var/www/ajax_workshop_2/index.php(25): require_once()
|
||||
#1 {main}
|
||||
thrown in /var/www/ajax_workshop_2/Views/index.phtml on line 20
|
||||
|
16
workshop4/.idea/.gitignore → php-s1/MVCtemplate-23-24/.idea/.gitignore
generated
vendored
@@ -1,8 +1,8 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
0
workshop5/.idea/.name → php-s1/MVCtemplate-23-24/.idea/.name
generated
Normal file → Executable file
0
workshop5/.idea/MVCtemplate.iml → php-s1/MVCtemplate-23-24/.idea/MVCtemplate.iml
generated
Normal file → Executable file
@@ -1,14 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="PublishConfigData" remoteFilesAllowedToDisappearOnAutoupload="false">
|
||||
<serverData>
|
||||
<paths name="workshop1">
|
||||
<serverdata>
|
||||
<mappings>
|
||||
<mapping local="$PROJECT_DIR$" web="/" />
|
||||
</mappings>
|
||||
</serverdata>
|
||||
</paths>
|
||||
</serverData>
|
||||
</component>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="PublishConfigData" remoteFilesAllowedToDisappearOnAutoupload="false">
|
||||
<serverData>
|
||||
<paths name="workshop1">
|
||||
<serverdata>
|
||||
<mappings>
|
||||
<mapping local="$PROJECT_DIR$" web="/" />
|
||||
</mappings>
|
||||
</serverdata>
|
||||
</paths>
|
||||
</serverData>
|
||||
</component>
|
||||
</project>
|
0
workshop5/.idea/encodings.xml → php-s1/MVCtemplate-23-24/.idea/encodings.xml
generated
Normal file → Executable file
0
workshop5/.idea/misc.xml → php-s1/MVCtemplate-23-24/.idea/misc.xml
generated
Normal file → Executable file
0
workshop5/.idea/modules.xml → php-s1/MVCtemplate-23-24/.idea/modules.xml
generated
Normal file → Executable file
0
workshop5/.idea/php.xml → php-s1/MVCtemplate-23-24/.idea/php.xml
generated
Normal file → Executable file
0
workshop5/.idea/scopes/scope_settings.xml → php-s1/MVCtemplate-23-24/.idea/scopes/scope_settings.xml
generated
Normal file → Executable file
0
workshop5/.idea/vcs.xml → php-s1/MVCtemplate-23-24/.idea/vcs.xml
generated
Normal file → Executable file
11
php-s1/MVCtemplate-23-24/Views/index.phtml
Executable file
@@ -0,0 +1,11 @@
|
||||
<?php require('template/header.phtml') ?>
|
||||
|
||||
<h2>Welcome to the web-site </h2>
|
||||
|
||||
<h3>A template for web-site development using the <i>Model-View-Controller</i> design pattern and <a href="https://getbootstrap.com/docs/5.2/getting-started/introduction/"><i>Bootstrap</i></a>.</h3>
|
||||
<p>The <i>Views/template</i> directory contains a <i>header.phtml</i> and a <i>footer.phtml</i> which should be included on every new page generated.
|
||||
To add additional pages just edit the file <i>header.phtml</i> to add the extra link and then add a new <i>Controller (pageN.php)</i> and a new <i>View (pageN.phtml)</i>, for each page required.<p/>
|
||||
<p>The <i>Model</i> code files are placed in the <i>Models</i> directory.</p>
|
||||
<p>Do not change any of the css files in the <i>css</> directory!<p>
|
||||
|
||||
<?php require('template/footer.phtml') ?>
|
15
php-s1/MVCtemplate-23-24/Views/template/footer.phtml
Executable file
@@ -0,0 +1,15 @@
|
||||
</main>
|
||||
|
||||
|
||||
<footer class="row">
|
||||
<div id="footer" class="col-xs-12">
|
||||
<p>Web-site development using the MVC design pattern and the Bootstrap CSS framework</p>
|
||||
</div>
|
||||
</footer>
|
||||
<!-- Bootstrap core JavaScript
|
||||
================================================== -->
|
||||
<!-- Placed at the end of the document so the pages load faster -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/js/bootstrap.bundle.min.js" crossorigin="anonymous"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
43
php-s1/MVCtemplate-23-24/Views/template/header.phtml
Executable file
@@ -0,0 +1,43 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
|
||||
<!-- Bootstrap core CSS -->
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous">
|
||||
|
||||
<link href="./css/my-style.css" rel="stylesheet">
|
||||
|
||||
<title>Server-Side Programming - <?php echo $view->pageTitle; ?></title>
|
||||
</head>
|
||||
|
||||
<body role="document">
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div id="title" class="col-xs-12">
|
||||
<img src="../../images/new_uos_logo.jpg" alt="Salford University" />
|
||||
<div class="pull-right"> <h1><?php echo $view->pageTitle ?> </h1></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row">
|
||||
<nav id="menu" class="col-xs-6 col-sm-3 col-md-2">
|
||||
<h2>Menu</h2>
|
||||
<ul class="nav flex-column">
|
||||
<li><a href="./index.php">Home</a></li>
|
||||
<li><a href="./page1.php">Page1</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<main id="content" class="col-xs-6 col-sm-9 col-md-10">
|
||||
|
||||
|
||||
|
38
php-s1/MVCtemplate-23-24/css/my-style.css
Executable file
@@ -0,0 +1,38 @@
|
||||
#title {
|
||||
margin-top: 12px;
|
||||
background-color: #fff;
|
||||
color: #000;
|
||||
|
||||
}
|
||||
#menu {
|
||||
border-top: solid 6px #f00;
|
||||
background-color: #f00;
|
||||
color: #fff;
|
||||
/*height: 400px;*/
|
||||
}
|
||||
|
||||
#menu a {
|
||||
background-color: #f00;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
}
|
||||
#menu a:hover {
|
||||
background-color: #f00;
|
||||
color: #ddd;
|
||||
text-decoration:underline;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#content {
|
||||
background-color: #fff;
|
||||
border-top: solid 6px #f00;
|
||||
|
||||
}
|
||||
|
||||
#footer {
|
||||
margin_top: 20px;
|
||||
text-align: center;
|
||||
background-color: #000;
|
||||
color: #fff;
|
||||
}
|
0
workshop5/fonts/glyphicons-halflings-regular.eot → php-s1/MVCtemplate-23-24/fonts/glyphicons-halflings-regular.eot
Normal file → Executable file
0
workshop5/fonts/glyphicons-halflings-regular.svg → php-s1/MVCtemplate-23-24/fonts/glyphicons-halflings-regular.svg
Normal file → Executable file
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 62 KiB |
0
workshop5/fonts/glyphicons-halflings-regular.ttf → php-s1/MVCtemplate-23-24/fonts/glyphicons-halflings-regular.ttf
Normal file → Executable file
0
workshop5/fonts/glyphicons-halflings-regular.woff → php-s1/MVCtemplate-23-24/fonts/glyphicons-halflings-regular.woff
Normal file → Executable file
0
workshop5/images/new_uos_logo.jpg → php-s1/MVCtemplate-23-24/images/new_uos_logo.jpg
Normal file → Executable file
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
5
php-s1/MVCtemplate-23-24/index.php
Executable file
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
|
||||
$view = new stdClass();
|
||||
$view->pageTitle = 'Homepage';
|
||||
require_once('Views/index.phtml');
|
0
workshop5/js/bootstrap.js → php-s1/MVCtemplate-23-24/js/bootstrap.js
vendored
Normal file → Executable file
0
workshop5/js/bootstrap.min.js → php-s1/MVCtemplate-23-24/js/bootstrap.min.js
vendored
Normal file → Executable file
4
workshop5/phpinfo.php → php-s1/MVCtemplate-23-24/phpinfo.php
Normal file → Executable file
@@ -1,2 +1,2 @@
|
||||
<?php
|
||||
phpinfo();
|
||||
<?php
|
||||
phpinfo();
|